我正在使用一个名为search_widget的Flutter插件。
此小部件的data参数带有一个列表。但是当我使用sqlite来获取数据时,我将其以Future<List>的形式保存。
有什么方法可以将Future<List>转换为List吗?
或任何其他方式使它起作用。

最佳答案

search_widget借用示例,您需要在像这样的小部件中使用dataList:

SearchWidget<LeaderBoard>(
   dataList: list,
   textFieldBuilder: (TextEditingController controller, FocusNode focusNode) {
     return MyTextField(controller, focusNode);
   },
 )

当然,您可以像其他答案一样将Future<List>转换为List。但是您将无法使用来执行dataList: await _sqliteCall();,因为build方法被设计为纯同步的。

当“ future ”完成时,您将必须返回诸如进度指示器之类的东西。为此,您可以使用FutureBuilder:

FutureBuilder<List<Leaderboard>>(
  future: _sqliteCall(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return SearchWidget<LeaderBoard>(
        dataList: snapshot.data,
        textFieldBuilder: (TextEditingController controller, FocusNode focusNode) {
          return MyTextField(controller, focusNode);
        },
      )
    }
    return CircularProgressIndicator();
  }
),

当然,这也可以使用StatefulWidget完成,您可以检查this article for a detailed explanation of the issue

关于flutter - 如何在Flutter中将Future <List>转换为List?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59489064/

10-11 21:58
查看更多