首页 > 解决方案 > 为什么 pushAndRemoveUntil 不删除相同的路由?

问题描述

例如,当前应用的路线是AllMessagesView()(并让它成为应用中的第一条路线)。我想要的是当我去下一条路线时,所有以前的路线都应该被删除。但如果我走同样的路线,就像这样

Navigator.of(context).pop(); // closes a drawer
Navigator.pushAndRemoveUntil(
    context,
    MaterialPageRoute(builder: (context) => AllMessagesView()),
    ModalRoute.withName('/'),
);

然后按android的back按钮,它会显示相同的路线。如果我再按一次back按钮,它就会关闭应用程序。

那么为什么pushAndRemoveUntil在这种情况下不删除相同的路线呢?

标签: flutter

解决方案


不确定,但您可以通过在代码下方进行以下修改来关闭或退出应用程序:

 Navigator.of(context).pop(); // closes a drawer
  Navigator.pushAndRemoveUntil(
    context,
    MaterialPageRoute(builder: (context) => AllMessagesView()),
    ModalRoute.withName('/'),
  );

// Now try to close the app with this:
  if (Platform.isAndroid) {
    SystemNavigator.pop();
  } else if (Platform.isIOS) {
    exit(0);
  }

推荐阅读