问题描述
在编辑页面中,一旦完成编辑,我将使用“确定”按钮显示警报。单击“确定”按钮后,我将移至上一个屏幕。以下是我的提醒框代码
Future<Null> _showDoneDialog() async {
return showDialog<Null>(
context: context,//barrierdismissible: true,builder: (BuildContext context) {
return new AlertDialog(
title: Center(
child: SingleChildScrollView(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,children: <Widget>[
Container(
margin: EdgeInsets.only(top: 12),child: Text(
"Profile has been edited successfully",textAlign: TextAlign.start,style: TextStyle(
color: Colors.black54,fontSize: 14,fontFamily: 'Oswald',fontWeight: FontWeight.w400),)),Row(
children: <Widget>[
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
Navigator.of(context).pop();
});
},child: Container(
decoration: Boxdecoration(
color: header,borderRadius:
BorderRadius.all(Radius.circular(100))),child: Text(
"OK",style: TextStyle(
color: Colors.white,fontSize: 17,),textAlign: TextAlign.center,],);
},);
}
如何从警报框调用上一个屏幕-> Navigator.of(context).pop();
解决方法
showDialog
使用导航器显示。因此,如果您的导航器堆栈是
Screen1> Screen2
当您显示对话框时,它将变为
Screen1> Screen2> FlutterDialog
然后...当您“弹出”导航器时,它将弹出最后一条路线,在这种情况下,它会移至上一个屏幕Screen2
我建议等待对话框弹出,然后再次“弹出”(转到屏幕1)
您可以通过简单的方式进行操作。只需等待对话框关闭即可
void _showDoneDialog() async {
await showDialog<Null>(
context: context,//barrierDismissible: true,builder: (BuildContext dialogContext) {
return new AlertDialog(
title: Center(
child: SingleChildScrollView(
child: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,children: <Widget>[
Container(
margin: EdgeInsets.only(top: 12),child: Text(
"Profile has been edited successfully",textAlign: TextAlign.start,style: TextStyle(
color: Colors.black54,fontSize: 14,fontFamily: 'Oswald',fontWeight: FontWeight.w400),)),Row(
children: <Widget>[
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
Navigator.of(dialogContext).pop();
});
},child: Container(
decoration: BoxDecoration(
color: header,borderRadius:
BorderRadius.all(Radius.circular(100))),child: Text(
"OK",style: TextStyle(
color: Colors.white,fontSize: 17,),textAlign: TextAlign.center,],);
},);
Navigator.of(context).pop();
}