如何在initState中访问Provider的上下文
我不断收到错误
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;
}
当我使用范围模型时,上面的代码运行完美,但是,用户提供程序模型和程序包引发异常。
在构建过程之前,我需要它来访问提供程序,因为构建UI需要提供程序的内容。
答案 0 :(得分:1)
尝试通过Future.delayed(...)
推迟此呼叫
答案 1 :(得分:1)
Provider.of<ProductProvider>(context, listen: false).selectedProduct
,并确保initState调用中没有NotifyListeners。
答案 2 :(得分:1)
使用Simon的AfterLayout
软件包https://pub.dev/packages/after_layout,并在您需要实现的函数中调用它。 Build()
运行后将调用它