首页 > 解决方案 > Flutter Provider,在哪里放置函数调用以从 firestore 数据库加载数据

问题描述

我目前正在开发一个应用程序,我想获取用户朋友的一些数据。理想情况下,登录后,此信息会加载到屏幕上以供查看。

我最初在 HomeScreen 的“build”方法中调用函数来执行此操作,但这会导致无限循环,因为函数调用以“notifyListeners()”结束。

话虽如此,我应该在哪里拨打电话以避免循环,同时在从数据库中获取数据后仍然更新 UI?

标签: flutterdartgoogle-cloud-firestorestate-management

解决方案


您应该看一下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(),因为此方法不能是异步的,因此您不能等待结果。

我希望这会有所帮助。


推荐阅读