【问题标题】:flutter navigator in alert box not working警报框中的颤振导航器不起作用
【发布时间】:2020-12-28 07:39:35
【问题描述】:

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

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,
                                )),
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              ),
            ),
          ),
        );
      },
    );
  }

如何从alertbox调用上一屏-> Navigator.of(context).pop();

【问题讨论】:

  • 当您单击“确定”按钮时,对话框会自行关闭?
  • 是的,警报框已关闭

标签: flutter alert navigator


【解决方案1】:

showDialog 使用导航器显示。因此,如果您的导航器堆栈是

屏幕1>屏幕2

当你显示你的对话框时,它变成了

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2022-11-25
    • 2019-01-05
    相关资源
    最近更新 更多