栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您可以使用 StreamBuilder* 做到这一点。每当 流中 的数据更改时,这将运行 builder 方法。 *

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

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 ContentBox(content: snapshot.data.elementAt(index));   } else if (index / 5 == page) {     page++;     blocProvider.contentBloc.index.add(index);   } });          } else { return Center(   child: CircularProgressIndicator(), );          }        });  }

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

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

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

希望这会有所帮助。

编辑:

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

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 }        });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号