首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调用Sqflite函数时将Future<List<String>>转换为List<String>

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

Stack Overflow用户
提问于 2019-07-11 02:57:24
回答 4查看 7.4K关注 0票数 2

我想从数据库中获取所有的项,但是我不知道如何将Future的字符串列表转换为字符串的列表。

代码语言:javascript
复制
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;
 }

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-11 03:12:50

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

代码语言:javascript
复制
void yourFunction() async {
     var x =  await DataBaseHelper.instance.queryAllRows();

}
票数 2
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
List<String> _databaseList

queryAllRows().then((rows) {

   setState(() {_databaseList = rows});
})

setState将告诉flutter重新构建窗口小部件树。then来处理未来。

票数 2
EN

Stack Overflow用户

发布于 2019-07-11 03:12:41

因为db.querys是异步的,所以它们将返回一个Future<List<Map<String,dynamic>>。为了得到没有未来的结果,我们可以得到一个回调,它将返回一个List<Map<String,dynamic>>

代码语言:javascript
复制
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;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56977045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档