[英]Future<List> to List with Objects in Flutter
我最近开始使用 Flutter。我的应用程序运行一个 sqflite 数据库,我想从中获取所有数据并将其显示在我的应用程序的行小部件中。
我知道如何获取数据,也知道如何构建小部件。 我很困惑,我不知道如何将从数据库中获取的数据转换为列表(用它我可以构建我的小部件)。
所以我得到了 Future List 但我需要 List Drink
只是看看:
我的Object:
class Drink {
int id;
String time;
int amount;
Drink({this.id, this.time, this.amount});
}
数据库:
Future _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE $table (
$columnId INTEGER PRIMARY KEY,
$columnTime TEXT NOT NULL,
$columnAmount INTEGER NOT NULL
)
''');
}
我如何获得 output:
Future<List> raw() async {
Database db = await instance.database;
var dbClient = await db;
var result = await dbClient.rawQuery("SELECT * FROM $table");
List<Map<String, dynamic>> r = result.toList();
return r;
}
在您的model
中创建一个工厂构造函数
class Drink {
int id;
String time;
int amount;
Drink({this.id, this.time, this.amount});
factory Drink.fromJson(Map<String, dynamic> json) {
return Drink(
id: json['columnId'],
time: json['columnTime'],
amount: json['columnAmount'],
);
}
}
稍后,你可以 map 你获取的数据库数据像这样Drink
Future<List<Drink>> fetchDrinks() async {
Database db = await instance.database;
var dbClient = await db;
var result = await dbClient.rawQuery("SELECT * FROM $table");
List<Map<String, dynamic>> r = result.toList().map((data) => Drink.fromJson(data));
return r;
}
您可以在fetchDrinks
方法上使用await
来获取Drink
列表 object。
我没有测试过这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.