dart 什么是正确的方法来消除Flutter对话框和当前页面?

y53ybaqx  于 2023-04-27  发布在  Flutter
关注(0)|答案(2)|浏览(128)

我的页面有一些API请求,当api返回错误时,我会显示对话框。
当我点击确认按钮时,对话框应该被关闭,当前页面将完成。

var count = 0;
Navigator.popUntil(context, (route) {
  return count++ == 2;
});

但有时它工作,有时它不工作。(当我重新打开这个页面)
我也试过

Navigator.of(context, rootNavigator: true).pop();
Navigator.pop(context);//pop dialog
Navigator.pop(context);//pop current page
Navigator.of(context).pop();

以上所有的都是有时工作有时不工作。
为什么它是如此不稳定?什么是正确的方式来处理对话框和页面导航?

zvokhttg

zvokhttg1#

what about this The Navigator.popUntil 
    
    this method is called with a predicate that matches the current page (specified by its route name), which removes all pages from the navigation stack except for the current page. Finally, the Navigator.pop method is called to remove the current page from the stack and return control to the previous page.

 // Dismiss the dialog and current page
  Navigator.popUntil(context, ModalRoute.withName('/'));
 // Replace '/' with the route name of your current page
  Navigator.pop(context);

这是基于你提到的情况,然而,你还需要检查你的页面的行为,它可能有一个不同的堆栈流。

p1iqtdky

p1iqtdky2#

final res = await showDialog(context: context, builder: {
  // pop dialog
  Navigator.pop(context, [true]);
});
if (res) {
  // pop current page
  Navigator.pop(context);
}

页面弹出动作应该取决于对话框弹出动作

相关问题