Один из основных механизмов Flutter Navigator 2.0 - это функция onPopPage внутри RouterDelegate ›build› Navigator. Однако я не понимаю, когда route.didPop (result) возвращает false.
Мы можем использовать знаменитый пример Джона Райана, чтобы покажи мой вопрос. Его демонстрационный код.
onPopPage: (route, result) {
if (!route.didPop(result)) {
return false;
}
// Update the list of pages by setting _selectedBook to null
_selectedBook = null;
show404 = false;
notifyListeners();
return true;
},
Во всех моих тестах с использованием автоматически созданной кнопки возврата AppBar route.didPop (result) возвращает true.
Документ остается:
bool didPop(dynamic result)
package:flutter/src/widgets/navigator.dart
A request was made to pop this route. If the route can handle it internally (e.g. because it has its own stack of internal state) then return false, otherwise return true (by returning the value of calling super.didPop). Returning false will prevent the default behavior of [NavigatorState.pop].
When this function returns true, the navigator removes this route from the history but does not yet call [dispose]. Instead, it is the route's responsibility to call [NavigatorState.finalizeRoute], which will in turn call [dispose] on the route. This sequence lets the route perform an exit animation (or some other visual effect) after being popped but prior to being disposed.
This method should call [didComplete] to resolve the [popped] future (and this is all that the default implementation does); routes should not wait for their exit animation to complete before doing so.
See [popped], [didComplete], and [currentResult] for a discussion of the result argument.
Но разве если маршрут может обрабатывать его внутренне (например, потому что у него свой собственный стек внутреннего состояния), то возвращать ложное среднее? У маршрута есть свой стек внутреннего состояния? Как добиться такого результата?
Спасибо, оставайся в безопасности