页面完成初始化时显示对话框
Show dialog when the page finish init
我想在推送页面时显示对话框。所以我在 initState
:
中显示对话框
class _Page2State extends State<_Page2> {
@override
void initState() {
super.initState();
_showDialog(context: context);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(color: Colors.red),
);
}
}
void _showDialog({required BuildContext context}) {
showCupertinoModalPopup(
context: context,
builder: (context) {
return Container(
width: 300,
height: 100,
color: Colors.green,
);
},
);
}
不足为奇,错误显示:
dependOnInheritedWidgetOfExactType<_InheritedCupertinoTheme>() or dependOnInheritedElement() was called before _Page2State.initState() completed.
为了解决这个问题,我更改了代码:
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {
_showDialog(context: context);
});
}
有效。但是不知道有没有更优雅的方式呢?
使用 WidgetsBinding.instance?.addPostFrameCallback
时,您在完成初始化后显示对话框。
addPostFrameCallback: Schedule a callback for the end of this frame.
你可以查看上一个问题
- Flutter showDialog(context) in initState method
我想在推送页面时显示对话框。所以我在 initState
:
class _Page2State extends State<_Page2> {
@override
void initState() {
super.initState();
_showDialog(context: context);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(color: Colors.red),
);
}
}
void _showDialog({required BuildContext context}) {
showCupertinoModalPopup(
context: context,
builder: (context) {
return Container(
width: 300,
height: 100,
color: Colors.green,
);
},
);
}
不足为奇,错误显示:
dependOnInheritedWidgetOfExactType<_InheritedCupertinoTheme>() or dependOnInheritedElement() was called before _Page2State.initState() completed.
为了解决这个问题,我更改了代码:
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {
_showDialog(context: context);
});
}
有效。但是不知道有没有更优雅的方式呢?
使用 WidgetsBinding.instance?.addPostFrameCallback
时,您在完成初始化后显示对话框。
addPostFrameCallback: Schedule a callback for the end of this frame.
你可以查看上一个问题
- Flutter showDialog(context) in initState method