2017-08-25 77 views
1

我想开发一个注销按钮,它会将我发送到登录路由并从导航器中删除所有其他路由。该文档似乎不解释如何使RoutePredicate或任何类型的removeAll函数。Flutter删除所有路由

回答

5

我可以用下面的代码来实现:

Navigator.of(context) 
    .pushNamedAndRemoveUntil('/login', (Route<dynamic> route) => false); 

这里的秘密是使用RoutePredicate总是返回false (Route<dynamic> route) => false。在这种情况下,它将删除除我推送的新路线/login之外的所有路线。

1

对于这种情况,您应该考虑使用WillPopScope小部件。

不仅它更干净。但它也有一些奖金:

  • 能够显示confirmDialog,如'你确定要离开吗?'
  • 你不会失去你的导航历史。这意味着您可以在登录后继续导航。

然后,如果你想关闭应用程序。您可以使用exit函数。