如何转换未来 列出来?
问题内容:
我正在使用名为的Flutter插件search_widget
。此小部件的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
方法被设计为纯同步的。
未来完成时,您将必须返回诸如进度指示器之类的东西。为此,您可以使用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
,您可以查看本文以获取有关该问题的详细说明。