我调用Navigator pushReplacement在我的flutter应用程序中显示一个新视图,并希望立即弹出一个简单的对话框,将该页面介绍给用户.(我希望用户能够在后台看到新视图)
如果我在窗口小部件的构建方法中调用showDialog,然后从构建方法返回窗口小部件(脚手架),我会收到错误,指出flutter已经在绘制窗口小部件.我希望我需要监听构建完成事件然后调用showDialog.
关于如何做到这一点的指导意见.
che*_*ins 27
你可以在'initState()'内部调用对话框,在绘制第一帧后再显示它的外观.
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
await showDialog<String>(
context: context,
builder: (BuildContext context) => new AlertDialog(
title: new Text("title"),
content: new Text("Message"),
actions: <Widget>[
new FlatButton(
child: new Text("OK"),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
);
});
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用 Timer.run(...)
@override
void initState() {
super.initState();
// simply use this
Timer.run(() {
showDialog(
context: context,
builder: (_) => AlertDialog(title: Text("Dialog title")),
);
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3020 次 |
最近记录: |