Flutter - StreamBuilder 加载数据和 UI 后显示警报对话框

Far*_*rwa 0 dart flutter flutter-layout rxdart stream-builder

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

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

代码:

if (dataSnapshot.hasData) {
            return dataSnapshot.data ? _loadUI(dataSnapshot.data) : _emptyView();
          }
Run Code Online (Sandbox Code Playgroud)

Sal*_*ano 8

你可以这样做:

void _loadUI(snapshot) {
...

  WidgetsBinding.instance.addPostFrameCallback((_){
    showDialog(
      context: context, 
      ...
    );
  });
}
Run Code Online (Sandbox Code Playgroud)

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