Где заявлен Flutter's Navigator?
При создании приложения Flutter мы используем Navigator для перемещения между экранами.
В моем приложении есть несколько экземпляров классов, которыми я хочу поделиться со всеми дочерними виджетами в иерархии.
Примером может служить класс драйвера базы данных (с сохранением состояния), который содержит все функции чтения/записи в фактическую базу данных.
На данный момент - функция main инициализирует его, затем полученный объект проходит через все конструкторы участвующих виджетов.
Как заставить его вести себя как навигатор, чтобы он был доступен в глобальной области без его импорта или передачи через цепочку конструкторов?
Я бы с радостью принял любые другие подходы, и все же, если вы также можете адресовать точный вопрос - я был бы признателен :)
Я открыл код виджетов Navigator, Stateless и Stateful, попытался поискать в Google источник этого экземпляра Navigator, но ничего полезного не нашел.
1 ответ
Вы пробовали использовать InheritedWidget?
Из документов:
Базовый класс для виджетов, эффективно распространяющих информацию по дереву.
СоздаватьDataBaseDriver
класс как унаследованный класс виджета, доступ к нему в его дочернем классе с помощьюcontext
какDataBaseDriver.of(context)