Ошибки выбрасывания провайдера в InitState. Provider.of<SomeProvider> (контекст)
Как получить доступ к контексту для провайдера в initState
Я получаю ошибку
flutter: The following assertion was thrown building Builder:
flutter: inheritFromWidgetOfExactType(_Provider<ProductProvider>) or inheritFromElement() was called before
flutter: _ProductDetailsPageState.initState() completed.
Всякий раз, когда я запускаю код ниже
if (Provider.of<ProductProvider>(context).selectedProduct == null) {
product = Product();
product.isReturnable = true;
product.isActive = true;
product.premiumType = "None Selected";
product.category = 'None Selected';
product.principal = 'None Selected';
} else {
product = Provider.of<ProductProvider>(context).selectedProduct;
}
NB. Приведенный выше код работал отлично, когда я использовал модель Scoped, однако пользователь, модель поставщика и пакет, выдает исключение.
Что мне нужно для доступа к провайдеру перед процессом сборки, потому что содержимое провайдера необходимо для построения пользовательского интерфейса.
2 ответа
Provider.of<ProductProvider>(context, listen: false).selectedProduct
и убедитесь, что в вызове initState нет NotifyListeners.
Используйте Саймона AfterLayout
package https://pub.dev/packages/after_layout и вызовите его в функции, которую необходимо реализовать. Он будет вызываться послеBuild()
был запущен