2017-08-25 101 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函數。