#flutter #provider #flutter-provider
Вопрос:
У меня есть несколько извлеченных виджетов, которым необходимо получить доступ к поставщику, который уже объявлен в их родительском виджете.
Я пытаюсь получить доступ к поставщику напрямую , используя это Provider.of<MyProvider>(context).getSomething()
, и это не работает. Но когда я назначаю его переменной поверх метода сборки var provider = Provider.of<MyProvider>(context)
, а затем использую такой метод provider.getSomething()
, он работает, почему это так?
Возникнут ли проблемы, если я включу это var provider = Provider.of<MyProvider>(context)
в каждый метод сборки извлеченных виджетов? или я должен просто добавить поставщика в качестве конструктора, чтобы родительский виджет просто передавал поставщика для каждого извлеченного дочернего виджета?
Ответ №1:
В первом случае вы объявляете его только с этим типом, в результате значение будет равно nothing, и тому, что вы объявили, ничего не назначено, поэтому объект пуст и не имеет доступа к функциям или так далее. Во втором случае вы назначаете этому объекту, чтобы он имел доступ ко всем функциям и так далее.
нет, все в порядке, и это распространенный шаблон для использования.