首页 > 解决方案 > 无法在 Changenotifier 类中创建 getter。在 Flutter 中使用 Provider 时出错

问题描述

你好,我是新的供应商。我在这里写了我有问题的步骤。1- 之后我调用了 api,我的模型类中有数据。2-然后在 ChangeNotifer 类中,我想制作 Model 类对象中的列表的 getter。我无法将模型类响应数据添加到这个 getter 变量。

class CartProductNotifier with ChangeNotifier{

final _webServices = WebServices();
GetProductDetailsModel _getProductDetailsModel;
List<Vd> _vdList = [];

callApi(String handle) {
    return _webServices.getProductDetails(handle).then((value) {
      _getProductDetailsModel = value;
      _vdList = value.data.product.vd; // after api call done data is in _vdList
      return value;
    });
  }

}

现在我正在创建吸气剂

List<Vd> get vdata {
   return _vdList;
 }

但是当我从我的ProductDetailsS​​creen类中调用这个 getter 时,我得到的是空白数组或 null。

 Consumer<CartProductListNotifier>(
                  builder: (context, value, child) {
                    return Text(
                       value.vdata[index].quantitySelectedByUser.toString(),  //data is not coming here
                    style: TextStyle(
                    fontSize: kFontSize16, fontWeight: kMediumFontWeight, color: Colors.black),
                    );
                  },
                ),

现在我无法更新消费者通知程序中的文本小部件中的值。

这是我的 main.dart

MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (context) => CartProductListNotifier(),
        ),
      ],
      child: MaterialApp(
        title: 'Application',
        debugShowCheckedModeBanner: false,

请解决此问题或告诉我另一种使用提供者的模型类调用 Api 的好方法。提前致谢。

标签: flutterdartflutter-dependenciesproviderflutter-change-notifier

解决方案


ChangeNotifierProvider看起来不错。您可以将 Type 明确指定为ChangeNotifierProvider<CartProductListNotifier>,但如果您的Consumer小部件没有引发错误,那么这似乎不是您的问题。

我注意到你没有在异步调用完成时通知你的消费者价值更新。添加 anotifyListeners()将更正:

callApi(String handle) {
    return _webServices.getProductDetails(handle).then((value) {
      _getProductDetailsModel = value;
      _vdList = value.data.product.vd;
      notifyListeners(); // ← if you want Consumer to rebuild when this call finishes
      return value;
    });
  }

推荐阅读