未处理的异常:A 产品在处理后被使用

Jav*_* A. 6 dart flutter

我正在使用MultiProvider,但出现此错误:

Unhandled Exception: A Products was used after being disposed. Once you have called dispose() on a Products, it can no longer be used.
Run Code Online (Sandbox Code Playgroud)

这是我的 main.dart 文件。这种结构有什么问题?

Unhandled Exception: A Products was used after being disposed. Once you have called dispose() on a Products, it can no longer be used.
Run Code Online (Sandbox Code Playgroud)

Tas*_*hin 7

使用 yourProvider.value 而不是 Create Your Problem will Be Solved 。谢谢

  itemBuilder: (ctx, index) => ChangeNotifierProvider.value(
        value: products[index],
        child: ProductItem(),
      ),
      itemCount: products.length,
    );
Run Code Online (Sandbox Code Playgroud)


小智 0

我认为您必须将 Products Provider 添加到代理提供商上方的providers: [] 作为 Auth Provider 的定义,如下所示:

providers: [
    ChangeNotifierProvider<Auth>.value(
                          value: Auth(),
     ChangeNotifierProvider<Products>.value(
                          value: Products(),
    ChangeNotifierProxyProvider<Auth, Products>(
      update: (ctx, auth, previousProducts) => Products(
        auth.token,
        auth.userId,
        previousProducts == null ? [] : previousProducts.items,
      ),
    ),
    ChangeNotifierProvider<Cart>.value(
      value: Cart(),
    ),
    ChangeNotifierProxyProvider<Auth, Orders>(
      update: (ctx, auth, previousOrders) => Orders(
        auth.token,
        auth.userId,
        previousOrders == null ? [] : previousOrders.orders,
      ),
    ),
  ],
Run Code Online (Sandbox Code Playgroud)