Поставщик, в чем разница между назначением переменной и ее непосредственным использованием?

#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, и тому, что вы объявили, ничего не назначено, поэтому объект пуст и не имеет доступа к функциям или так далее. Во втором случае вы назначаете этому объекту, чтобы он имел доступ ко всем функциям и так далее.

нет, все в порядке, и это распространенный шаблон для использования.