在开发中,有时候会有这样的场景,就是一进来页面 就弹出一个Dialog模态框 进行一个页面的提示 或者 页面指引操作,但由于构建的问题,flutter不能在进入页面初始化的时候 直接弹出一个Dialog ,这样会报异常 因为上下文还没被构建出来,这个时候 可以使用 Future.delayed 去实现 这里不光是Dialog 只要是要先加载完的需求 都能用这个 比如一进来就要获取一个组件的位置 就需要先加载完 否则报错,示例如下:
@override
void initState() {
// TODO: implement initState
super.initState();
//初始化时 弹出弹出框 必须加上Future.delayed
Future.delayed(
Duration.zero,
(){
_showCupertinoAlertDialog(
context: context,
title: "提示",
content: "您没有提交的权限,\n当前仅供查阅",
sureText: "确定"
);
}
);
}
///弹窗
void _showCupertinoAlertDialog({context, String title, String content, String sureText}){
showCupertinoDialog(context: context, builder: (cxt){
return CupertinoAlertDialog(title: Text(title), content: Text(content), actions: [
// CupertinoDialogAction(child: Text("取消"),onPressed: (){
// Navigator.pop(cxt,1);
// },),
CupertinoDialogAction(child: Text(sureText),onPressed: (){
Navigator.pop(cxt,2);
// clockJudge();
},)
],);
});
}