如何解决在 getx 中将构造函数值从视图传递到控制器
所以这是我的视图,其中包含构造函数。我想将此构造函数值产品传递给我的控制器,即 WishListIconController。这个视图实际上是我当前项目中许多视图中调用的小部件,因此我使用构造函数将值传递给它。
class WishListIconView extends GetView{
final products;
final category;
WishListIconView({this.products,this.category});
WishListServiceApi wishListService = locator<WishListServiceApi>();
WishlistIconController wishListIconController =
Get.put(WishlistIconController());
@override
Widget build(BuildContext context) {
return Obx(
() => locator<SharedPreferencesManager>().isKeyExists('isLogin') == true
? wishListIconController.isAdded.value == false
? IconButton(
splashRadius: 3,constraints: BoxConstraints(),padding: EdgeInsets.all(0),icon: Icon(
Icons.favorite_border,size: 18,color: Colors.blue,),onPressed: () async {
bool success = await wishListService.addToWishList(
products.id,category,products);
},)
: IconButton(
splashRadius: 3,icon: Icon(
Icons.favorite,onPressed: () async {
bool success = await wishListService.deleteWishListItem(
products.id,category);
},)
: IconButton(
splashRadius: 3,icon: Icon(
Icons.favorite_border,onPressed: () {
Fluttertoast.showToast(
msg: "Please login to add product to wishlist",toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.TOP,backgroundColor: Colors.blue[300],textColor: Colors.white,fontSize: 16.0);
},));
}
}
这是我的控制器。我想将产品传递给这里,以便我可以使用 产品价值。
class WishlistIconController extends GetxController {
WishListServiceApi wishListServiceApi = locator<WishListServiceApi>();
var isAdded = false.obs;
@override
void onInit() {
super.onInit();
isInWishList();
}
isInWishList() {
isAdded.value = wishListServiceApi.wishListResponse
.any((element) => element.id == products.id);
update();
}
@override
void onReady() {
super.onReady();
isInWishList();
}
}
解决方法
在您的控制器中声明一个 products
变量并声明一个 init
方法,该方法将设置 products
变量的值:
var products;
init(p){
products = p;
update();
}
然后在您的小部件的构建方法上,在返回您的小部件树之前,像这样调用它:
wishListIconController.init(products);
return....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。