【问题标题】:Wait for subtree widgets to finish loading async data before showing them等待子树小部件完成加载异步数据,然后再显示它们
【发布时间】:2018-12-03 14:14:41
【问题描述】:

我的应用中有多个小部件组件,每个组件都需要来自服务器的不同数据。在组件的 initState 上,我获取它需要的数据。

当应用程序打开时,我会从服务器获取要显示的组件。示例:仅显示组件 1 和 3。如何等待 1 和 3 加载而不显示它们(仅显示加载器)并且当两者都完成加载时,我会显示它们或显示错误页面?

【问题讨论】:

  • 使用FutureBuilder(或StreamBuilderAnimatedBuilder

标签: dart flutter


【解决方案1】:

您可以使用三元来验证数据是否准备就绪,如果没有,您可以只显示CircleProgressIndicator,如下所示:

        class _LoadingComponentsState extends State<LoadingComponents> {
          bool waiting = true;

          loadingAsyncTask() async {
            //.. your logic

            setState(() {
              waiting = false;
            });
          }

          @override
          void initState() {
            loadingAsyncTask();
            super.initState();
          }

          @override
          Widget build(BuildContext context) {
            return Container(
              child: waiting
                  ? Center(
                      child: CircularProgressIndicator(),
                    )
                  : ListView(
                      children: [
                        //your data...
                      ],
                    ),
            );
          }
        }

【讨论】:

  • 我的问题是子小部件获取他们自己的数据,我想在删除循环进度指示器之前等待所有子小部件获取他们的数据
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2017-09-10
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多