Рецепты
Стек и типизированные результаты
Точные операции для замены Login, очистки сценария, обновления параметров и возврата значения с закрытой страницы.
v1.1.0Средний уровень
Стек и типизированные результаты
Заменить Login на Home
Было: [Welcome, Login]. Нужно: [Welcome, Home].
dart
await navigation.replaceTop<void>(const HomeDestination());
push оставил бы Login под Home.
Полностью завершить первоначальную настройку
dart
await navigation.replaceAll(<NavigationTarget<Object?>>[
const NavigationTarget<Object?>(destination: HomeDestination()),
]);
Было [Welcome, Permissions, ProfileSetup], стало [Home].
Оставить Cart и удалить шаги Checkout
dart
navigation.pushAndRemoveUntil<void>(
const ReceiptDestination(),
retain: const NavigationRouteIdMatcher(NavigationRouteId('cart')),
);
[Home, Cart, Address, Payment] превращается в [Home, Cart, Receipt].
Обновить Product без завершения Ticket
dart
await navigation.reconfigureTop<void>(
const ProductDestination(productId: 'keyboard-43'),
);
replaceTop завершает старый Entry, а reconfigureTop сохраняет тот же NavigationEntryId и ожидающий результата Ticket.
Вернуть Address
dart
final ticket = navigation.push<Address?>(const AddressPickerDestination());
final completion = await ticket.completed;
if (completion case NavigationPopped<Address?>(:final result)) {
checkout.setAddress(result);
}
На странице выбора адреса вызовите context.readNavigation.pop(result: selectedAddress). NavigationRemoved означает, что Entry удалён перестройкой стека, а не обычным pop с null.