我想从数据库中获取所有的项,但是我不知道如何将Future的字符串列表转换为字符串的列表。
var x = DataBaseHelper.instance.queryAllRows();
Future<List<String>> queryAllRows() async {
Database db = await instance._initDatabase();
List<Map<String,dynamic>> s = await db.query(table ,columns: [columnname]);
List<String> list = new List();
for(var x in s){
x.forEach((k,v)=>list.add(v));
}
return list;
}
我想获取数据库中的所有值,但不知道如何将这些值转换为列表
发布于 2019-07-11 03:12:50
您需要一个异步函数来检索数据。
void yourFunction() async {
var x = await DataBaseHelper.instance.queryAllRows();
}
发布于 2019-07-11 03:13:03
你有两个选择。您可以使用未来构建器来创建小部件,也可以使用纯期货+ setState
https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html
https://dart.dev/tutorials/language/futures
https://api.flutter.dev/flutter/widgets/State/setState.html
List<String> _databaseList
queryAllRows().then((rows) {
setState(() {_databaseList = rows});
})
setState
将告诉flutter重新构建窗口小部件树。then
来处理未来。
发布于 2019-07-11 03:12:41
因为db.querys是异步的,所以它们将返回一个Future<List<Map<String,dynamic>>
。为了得到没有未来的结果,我们可以得到一个回调,它将返回一个List<Map<String,dynamic>>
。
var x = DataBaseHelper.instance.queryAllRows();
Future<List<String>> queryAllRows() async {
Database db = await instance._initDatabase();
db.query(table ,columns: [columnname]).then((data){
List<Map<String,dynamic>> s = data;
List<String> list = new List();
for(var x in s){
x.forEach((k,v)=>list.add(v));
}
});
return list;
}
https://stackoverflow.com/questions/56977045
复制相似问题