我正在使用一个名为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/