使用 Navigator.pop() 抖动“showDialog”

mfv*_*mfv 5 dart flutter

我的 showDialog 有问题,当我按下没有任何反应但如果我使用Navigator.pushNamed(context, "/screen1")它就可以了。我无法运行Navigator.pop(context),它不会返回任何错误。

_showDialog(BuildContext context) {
return showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: new Text("Alert Dialog title"),
        actions: <Widget>[
          new FlatButton(
            child: new Text("Back"),
            onPressed: () {
              //Navigator.pushNamed(context, "/screen1");
              Navigator.pop(context);
            },
          ),
        ],
      );
    });}
Run Code Online (Sandbox Code Playgroud)

在我的 build() 中:

IconButton(
iconSize: 30.0,
onPressed: () => _showDialog(context),
icon: Icon(
  Icons.clear,
  color: Colors.white,
 ),
Run Code Online (Sandbox Code Playgroud)

)

小智 12

有同样的问题。 useRootNavigator: false,在 showDialog 参数中解决了我的问题。

  • 您能解释一下它的作用吗? (3认同)

Pra*_*ant 7

对于这个问题,上面的答案应该被接受,只是阐述了上面的答案

return showDialog(
context: context,
useRootNavigator: false, //this property needs to be added 
builder: (BuildContext context) {....});
Run Code Online (Sandbox Code Playgroud)


Rit*_*kti 6

使用 pop() 两次:-

Navigator.of(context).pop(); Navigator.of(context).pop();

原因:第一个弹出函数关闭对话框,第二个弹出函数关闭屏幕


sha*_*l.k 5

尝试致电Navigator.of(context).pop();而不是Navigator.pop(context);

  • 请解释一下这个答案如何解决问题? (4认同)
  • 这两者有什么区别? (2认同)