Изучение
Операции над стеком и ветвями
Выбор операции по точному изменению стека и разделение фиксации перехода и завершения Route.
v0.1.0-dev.2Средний уровень
Операции над стеком и ветвями
В пакете нет универсального метода, скрывающего фактическое изменение. Используйте push, replaceTop, reconfigureTop, replaceAll, setStack, pushAndRemoveUntil, replaceTail, popUntil, remove, activateBranch или resetBranch в соответствии с нужным результатом.
Операции, создающие Entry, возвращают NavigationTicket<R> с двумя независимыми Future:
committedзавершается после разрешения Destination и политик;completedзавершается после pop, удаления Entry при перестройке стека или отказа до фиксации.
dart
final ticket = navigation.push<bool>(
const ProductDestination(productId: 'keyboard-42'),
);
if (await ticket.committed case NavigationCommitted()) {
switch (await ticket.completed) {
case NavigationPopped<bool>(:final result):
applySelection(result);
case NavigationRemoved<bool>():
handleFlowRewrite();
case NavigationNotCommitted<bool>():
throw StateError('Impossible after commit.');
}
}
Семантика стека и история браузера разделены. Каждая операция принимает NavigationHistoryMode, поэтому атомарный replaceAll может создать пользовательскую запись истории, а Redirect — заменить недоступный адрес.