當路由從堆疊中移除時,關聯的 Future 必須完成
概述
#當路由被推入時,開發者可以 await 它們,以便在它們被 pop 時得到通知。然而,當它們被移除時,這不起作用,因為關聯的 Future 永遠不會完成。
背景
#所有呼叫 remove 的 Navigator 方法都有這個問題。透過使用 complete,該問題得以妥善解決,使開發者能夠傳遞結果。
變更說明
#所有 Navigator 方法都已更新,不再呼叫 remove,而是使用 complete。上下文選單現在從 contextMenuBuilder 引數構建。
所有直接使用 complete 的方法現在都接受一個可選的 result 引數,將其返回給關聯的 Future。目前,其他間接使用 remove 的方法會返回 null。未來,我們可能會透過一個可選的回撥函式來擴充套件這些方法,以便開發者能夠處理間接場景中的 pop 邏輯(例如 removeUntil)。
在此 PR 之前,以下方法無法返回結果
dart
Navigator.of(context).removeRoute(route);
Navigator.of(context).removeRouteBelow(route);在此 PR 之後,方法可以返回結果
dart
Navigator.of(context).removeRoute(route, result);
Navigator.of(context).removeRouteBelow(route, result);遷移指南
#如果您實現了 RouteTransitionRecord 並使用了 markForRemove,則需要改用 markForComplete。markForRemove 現已棄用。
對於其他開發者,無需進行任何更改。Navigator 將繼續按預期工作,並具備新的功能。
時間線
#已釋出到版本: 3.31.0-0.0.pre
穩定版本:3.32