您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

有没有办法在InitState方法上加载异步数据?

有没有办法在InitState方法上加载异步数据?

您可以使用 *

下面是我的一个示例项目的代码片段:

StreamBuilder<List<Content>> _getContentsList(BuildContext context) {
    final BlocProvider blocProvider = BlocProvider.of(context);
    int page = 1;
    return StreamBuilder<List<Content>>(
        stream: blocProvider.contentBloc.contents,
        initialData: [],
        builder: (context, snapshot) {
          if (snapshot.data.isNotEmpty) {
            return ListView.builder(itemBuilder: (context, index) {
              if (index < snapshot.data.length) {
                return Content@R_557_2419@(content: snapshot.data.elementAt(index));
              } else if (index / 5 == page) {
                page++;
                blocProvider.contentBloc.index.add(index);
              }
            });
          } else {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
        });
  }

在上面的代码中, 侦听内容的任何更改,最初是一个空数组,并显示 。一旦我进行API调用提取的数据将添加到contents数组,该数组将运行 方法

用户向下滚动时,将提取更多内容并将其添加内容数组,该数组将再次运行 方法

在您的情况下,仅需要初始加载。但这为您提供了一个选项,可以在屏幕上显示其他内容,直到获取数据为止。

希望这会有所帮助。

在您的情况下,我猜它看起来将如下所示:

StreamBuilder<List<Content>>(
        stream: account, // stream data to listen for change
        builder: (context, snapshot) {
            if(account != null) {
                return _googleSignIn.signInSilently();
            } else {
                // show loader or animation
            }
        });
其他 2022/1/1 18:14:54 有673人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶