警报框中的抖动导航器不起作用

问题描述

编辑页面中,一旦完成编辑,我将使用“确定”按钮显示警报。单击“确定”按钮后,我将移至上一个屏幕。以下是我的提醒框代码

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();
  }