调用Sqflite函数时,将Future <List <String >>转换为List <String>

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

我想从数据库中获取所有项目,但我很困惑如何将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;
 }

我想获取数据库中的所有值,但不知道如何将这些值转换为List

提问于
用户回答回答于

您需要一个异步函数来检索数据。

void yourFunction() async {
     var x =  await DataBaseHelper.instance.queryAllRows();

}
用户回答回答于

你有两个选择。您可以使用future builder来创建小部件或使用简单的期货+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将告诉widge重建小部件树。then处理未来。

扫码关注云+社区

领取腾讯云代金券