Где заявлен Flutter's Navigator?

При создании приложения Flutter мы используем Navigator для перемещения между экранами.

В моем приложении есть несколько экземпляров классов, которыми я хочу поделиться со всеми дочерними виджетами в иерархии.

Примером может служить класс драйвера базы данных (с сохранением состояния), который содержит все функции чтения/записи в фактическую базу данных.

На данный момент - функция main инициализирует его, затем полученный объект проходит через все конструкторы участвующих виджетов.

Как заставить его вести себя как навигатор, чтобы он был доступен в глобальной области без его импорта или передачи через цепочку конструкторов?

Я бы с радостью принял любые другие подходы, и все же, если вы также можете адресовать точный вопрос - я был бы признателен :)

Я открыл код виджетов Navigator, Stateless и Stateful, попытался поискать в Google источник этого экземпляра Navigator, но ничего полезного не нашел.

1 ответ

Вы пробовали использовать InheritedWidget?

Из документов:

Базовый класс для виджетов, эффективно распространяющих информацию по дереву.

СоздаватьDataBaseDriverкласс как унаследованный класс виджета, доступ к нему в его дочернем классе с помощьюcontextкакDataBaseDriver.of(context)

Другие вопросы по тегам