flutter - Flutter Provider,在哪里放置函数调用以从 firestore 数据库加载数据
问题描述
我目前正在开发一个应用程序,我想获取用户朋友的一些数据。理想情况下,登录后,此信息会加载到屏幕上以供查看。
我最初在 HomeScreen 的“build”方法中调用函数来执行此操作,但这会导致无限循环,因为函数调用以“notifyListeners()”结束。
话虽如此,我应该在哪里拨打电话以避免循环,同时在从数据库中获取数据后仍然更新 UI?
解决方案
您应该看一下FutureBuilder
小部件,它提供了强大的功能来加载异步数据并在可用时显示结果。在加载数据时,或者如果您的代码遇到错误,您可以显示不同的小部件。本质上它是这样工作的:
FutureBuilder<String>(
future: _yourFuture,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.active:
case ConnectionState.waiting:
// Return loading indicator
return Container();
case ConnectionState.done:
if (snapshot.hasError) {
// Return error
return Container();
} else if (snapshot.hasData) {
// Data loaded => use snapshot.data to access it
return Container();
}
}
})
我不建议在 期间加载数据initState()
,因为此方法不能是异步的,因此您不能等待结果。
我希望这会有所帮助。
推荐阅读
- postgresql - 如何在 PSQL 中实现与 OUTER UNION CORR 类似的结果?
- ghostscript - 手动编辑(每页)Postscript 文件
- css - 在 React Native 中使用固定数字设置高度和宽度是否被认为是不好的做法?
- python - 具有大量意图类的意图分类
- c# - Advertising.IsReady() 在统一广告中始终返回 false
- unity3d - 将 2018.1 更新到 2018.3 后如何修复 Unity textmeshpro 错误?
- r - 如何适应多个地块的大小?
- ruby-on-rails - 使用设计基于附加参数登录
- matlab - 在 matlab 中的声音文件的原始数据上绘制有声数据
- https - Keycloak 登录和注册操作不是 https