首页 > 解决方案 > Flutter - 在 StreamBuilder 加载数据和 UI 后显示警报对话框

问题描述

从 StreamBuilder 获取数据后,我想显示一个警报对话框。我还有一个要渲染的 UI。目前,当我尝试_loadUI在返回实际 UI 之前在方法内部构建对话框时,我遇到了这样的错误。

在构建期间调用 setState() 或 markNeedsBuild()。

代码:

if (dataSnapshot.hasData) {
            return dataSnapshot.data ? _loadUI(dataSnapshot.data) : _emptyView();
          }

标签: flutterdartflutter-layoutrxdartstream-builder

解决方案


你可以这样做:

void _loadUI(snapshot) {
...

  WidgetsBinding.instance.addPostFrameCallback((_){
    showDialog(
      context: context, 
      ...
    );
  });
}

addPostFrameCallback 在一帧期间运行,就在持久帧回调之后(即刷新主渲染管道时)。


推荐阅读