Руководства
Первый типизированный Route
Контракты Destination и Route Definition, Mount, владение Session и ожидание типизированного результата.
Первый типизированный Route
Установите пакет и подключите публичную библиотеку:
flutter pub add ark_navigation:^0.1.0-dev.2
1. Опишите намерение и результат
Создайте HomeDestination extends NavigationDestination<void> и ProductDestination extends NavigationDestination<bool>. Проверенные параметры должны быть полями самого Destination.
2. Свяжите Page и URI
Создайте NavigationRouteDefinition для каждого Destination. pageBuilder получает типизированное значение. Кодек добавляется, если Route должен поддерживать веб-адреса, восстановление или ссылки платформы.
3. Соберите Graph
Создайте корневой Scope, поместите Route Definition в Module функциональной части приложения и смонтируйте Module в корень. Module владеет определениями Route, приложение — их положением.
4. Определите владельца Session
Создайте стабильную Session в initState, передайте session.routerConfig в MaterialApp.router и закройте Session в dispose().
5. Выполните переход
final ticket = context.readNavigation.push<bool>(
const ProductDestination(productId: 'keyboard-42'),
);
await ticket.committed;
final completion = await ticket.completed;
Вызовите pop(result: true). Вызывающий код получит bool?, а не Object? или значение из Map.