flutter - 无法在 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;
}
但是当我从我的ProductDetailsScreen类中调用这个 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 的好方法。提前致谢。
解决方案
你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;
});
}
推荐阅读
- rabbitmq - 如何以json格式获取rabbitmq集群状态
- r - 通过 R 中数据框的列迭代(循环)
- pyspark - 将 SQL Case 语句转换为 Spark
- active-directory - Centrex/Asterisk 具有多个不同的 AD
- c# - 如果大对象堆中的一个对象引用了小对象,这是否应该防止它们在第 2 代 GC 之前被垃圾收集?
- r - 根据单元格值从矩阵行中采样单元格
- reactjs - github页面中带有反应路由器的空页面。Package.json 主页或 .env PUBLIC_URL
- laravel - Laravel Eloquent 分页中的参数
- excel - 如何使用 POI 获取自定义单元格值
- python - opencv:使用 r>b>g 提取像素