#flutter #dart
Вопрос:
Как и в любом другом приложении, которое я создал, у меня есть стандартный код, который мне нужно выполнить перед загрузкой приложения:
- проверка сеанса
- храните увлажнение
- прослушиватель изменения маршрута
- прослушиватель сеанса пользователя
- …
Этот код чаще всего требует наличия BuildContext
контекста. Я не могу использовать контекст, который находится на одном уровне с MaterialApp
из-за жалоб от flutter, поэтому мне нужно пройти более глубокие уровни 1 , чтобы получить контекст от потомка. Этот потомок-мой домашний маршрут, и он, очевидно, терпит неудачу, когда вы удаляетесь.
Как правильно использовать контекст и запускать приложение «Мои наблюдатели» по всему миру? Где бы вы постоянно следили, например, за изменением навигации?
Комментарии:
1. Я считаю, что вы можете использовать свойство routeObserver MaterialApp для передачи routeObserver от вашего routeChangeListener.
2. Это был просто пример. У меня есть много других битов, которые нужно запустить.
3. Я не думаю, что, за исключением того, что связано с деревом виджетов, вам понадобится контекст. В любом случае, навигация будет единственной вещью, которая будет зависеть от приложения MaterialApp, для остальной части вы можете обернуть все в конструктор, который даст вам контекст.
4. Даже для того, чтобы вывести локоть из блока (для доступа к состоянию), требуется контекст:
BlocProvider.of<ProfileCubit>(context);
Ты имеешь в виду туbuilder
частьMAterialApp
?5. Нет, Конструктор — это тоже виджет. Если все находится на вершине, вам не нужен BlocProvider для создания объекта блока. Вы можете непосредственно создать его самостоятельно и использовать его. BlocProvider используется для обхода дерева виджетов, чтобы найти ближайшего предка типа блока.