Изучение
Архитектура и владение
Путь запроса от типизированного Destination до отрисованного стека Navigator и владелец каждого объекта.
Архитектура и владение
Ark Navigation разделяет определение, изменяемое состояние и отрисовку Flutter.
Destination + точная операция
↓
NavigationPort
↓
Graph resolution → Redirect → leave Guard → enter Guard
↓
NavigationController атомарно изменяет стек
↓
NavigationSnapshot
↓
NavigationRouter строит страницы Navigator и сообщает URI
NavigationGraph — неизменяемое определение Scope, Module, Mount, роутов и политик. NavigationSession владеет изменяемым Controller и объектами Flutter Router для одного представления. Необязательный NavigationRuntime координирует несколько Session с общим Graph, но не объединяет их стеки.
Объект, создавший Session, обязан его закрыть. Подходящим владельцем будет корневой StatefulWidget, область видимости приложения или область DI с тем же жизненным циклом. Одна глобальная Session для всех окон неверна: каждому Flutter View нужны собственные стек, история и состояние восстановления.
Код функционального модуля обычно зависит от узкого NavigationPort. Внутри дерева навигации виджет может получить его через BuildContext. Композиция Graph остаётся в корне приложения, поэтому Module не знает, где именно его смонтируют.