无法在 Changenotifier class 中创建 getter。在 Flutter 中使用 Provider 时出错
Unable to create getter in Changenotifier class. error when using Provider in Flutter
你好,我是提供商的新手。我在这里写了我遇到问题的步骤。
1- 我打电话给 api 之后我的模型 class 中有数据。
2- 然后在 ChangeNotifer class 中,我想创建模型 class 对象中的列表 getter。
我无法将模型 class 响应数据添加到此 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;
});
}
}
现在我正在创作getter
List<Vd> get vdata {
return _vdList;
}
但是当我从我的 ProductDetailsScreen class 调用这个 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,
请解决此问题或告诉我另一个使用模型 class 与提供商调用 Api 的好方法。
提前致谢。
您的 ChangeNotifierProvider
看起来不错。您可以将类型明确指定为 ChangeNotifierProvider<CartProductListNotifier>
,但如果您的 Consumer
小部件没有引发错误,那么这似乎不是您的问题。
我注意到您没有在异步调用完成时通知您的消费者价值更新。添加 notifyListeners()
将更正:
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;
});
}
调用 API 后调用 setData 函数解决了我的问题,现在我在 _vdList 中得到结果。
例子
setData(GetProductDetailsModel _productModel) {
_getProductDetailsModel = _productModel;
_vdList = _productModel.data.product.vd;
_voList = _productModel.data.product.vo;
notifyListeners();
}
你好,我是提供商的新手。我在这里写了我遇到问题的步骤。 1- 我打电话给 api 之后我的模型 class 中有数据。 2- 然后在 ChangeNotifer class 中,我想创建模型 class 对象中的列表 getter。 我无法将模型 class 响应数据添加到此 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;
});
}
}
现在我正在创作getter
List<Vd> get vdata {
return _vdList;
}
但是当我从我的 ProductDetailsScreen class 调用这个 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,
请解决此问题或告诉我另一个使用模型 class 与提供商调用 Api 的好方法。 提前致谢。
您的 ChangeNotifierProvider
看起来不错。您可以将类型明确指定为 ChangeNotifierProvider<CartProductListNotifier>
,但如果您的 Consumer
小部件没有引发错误,那么这似乎不是您的问题。
我注意到您没有在异步调用完成时通知您的消费者价值更新。添加 notifyListeners()
将更正:
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;
});
}
调用 API 后调用 setData 函数解决了我的问题,现在我在 _vdList 中得到结果。
例子
setData(GetProductDetailsModel _productModel) {
_getProductDetailsModel = _productModel;
_vdList = _productModel.data.product.vd;
_voList = _productModel.data.product.vo;
notifyListeners();
}