我有一些行的数据库,我想获取表中的所有数据并将它们添加到对象类型列表中。
我尝试过:
var dbClient = await database;
result = await dbClient.rawQuery('SELECT * FROM $newsTable');
for (var n in result){
favNews.add(n);
}
列表在其中:
List<NewsModel> favNews = <NewsModel>[];
但是出现此错误:
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: type 'QueryRow' is not a subtype of type 'NewsModel'
如何获取新闻类型数组中的结果?
答案 0 :(得分:0)
我假设您正在使用sqflite。
rawQuery
返回List<Map>
,并且在迭代此列表时,循环n
中的局部变量具有类型Map
,无法将其分配给NewsModel
您需要向模型类NewsModel
添加一些转换方法,以从Map
进行转换。
甚至还有example in the sqflite documentation!
class NewsModel {
int id;
String title;
// ... more property
NewsModel();
NewsModel.fromMap(Map<String, dynamic> map) {
id = map["id"]
title = map["title"]
// ...
}
}
以及数据库中的查询代码:
var dbClient = await database;
result = await dbClient.rawQuery('SELECT * FROM $newsTable');
for (var n in result){
favNews.add(NewsModel.fromMap(v));
}