Изучение

Операции над стеком и ветвями

Выбор операции по точному изменению стека и разделение фиксации перехода и завершения 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 — заменить недоступный адрес.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.