InitState中的提供程序引发错误。 Provider.of <someprovider>(上下文)

时间:2019-05-13 03:57:17

标签: dart flutter

如何在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需要提供程序的内容。

3 个答案:

答案 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()运行后将调用它