颤振:在启动时显示对话框



我现在对Flutter已经很熟悉了,但是我不能完全理解这个。

我想在State<T>类中第一次启动时显示一个对话框,其中T是一个有状态的小部件。对话框中包含一些关于如何使用应用程序的简短说明。但是在build方法中执行此逻辑会抛出错误,以及在initState中,如在didChangeDependencies方法中。

那么我可以在哪里(或者什么时候)调用下面的逻辑

if(someCondition)
showDialog(...);

没有得到以下错误

在构建FutureBuilder(state: _FutureBuilderState#66844)时抛出以下断言:setState()或markNeedsBuild()在构建过程中调用。

这个Overlay小部件不能被标记为需要构建,因为框架已经在构建小部件了。小部件可以被标记为需要在构建阶段进行构建,只有当它的祖先目前正在建造。允许这个例外,因为框架在子部件之前构建父部件,这意味着肮脏的后代总会被建造。否则,框架可能会在此构建阶段不要访问此小部件。这个小部件setState()或markNeedsBuild()被调用是:覆盖- [LabeledGlobalKey # 27 d99]状态:OverlayState#4aeab(entries: [OverlayEntry#3c67c(opaque: true;maintainState: false), OverlayEntry#564f9(opaque: false;maintainState: true), OverlayEntry#7b46b(opaque: false;maintainState:false), OverlayEntry#81c9d(opaque: false;maintainState: true)])当违规调用发生时正在构建的小部件make is: FutureBuilder state: _FutureBuilderState#66844

在尝试显示对话框之前确保您的小部件已经完全构建好

@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
showDialog(
// ...
);
});
}

最新更新