我正在使用一个名为search_widget
的flutter插件。这个小部件的数据参数需要一个列表。但是当我使用sqlite
获取数据时,我在Future中有它
使用await
关键字将等待Future完成,一旦您的Future被执行,它的结果将返回给您。
import 'dart:async';
void main() async {
Future<List> _futureOfList = _getList();
List list = await _futureOfList ;
print(list); // will print [1, 2, 3, 4] on console.
}
Future<List> _getList(){
return Future.value([1,2,3,4]);
}
为此,您调用的方法应该是async
我希望这有助于,如有任何疑问,请评论。
List list = await _fetchList();
假设_fetchList()
是这样的:
Future<List> _fetchList() {...}
借用search_widget的例子,你需要dataList
在这样的小部件中:
SearchWidget<LeaderBoard>(
dataList: list,
textFieldBuilder: (TextEditingController controller, FocusNode focusNode) {
return MyTextField(controller, focusNode);
},
)
当然,您可以转换Future
当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
来完成,您可以查看本文以获取该问题的详细解释。