Flutter Getx无法在购物应用程序中将商品添加到购物车中



我试图在使用Flutter和GetX的购物应用程序中添加项目到购物车。我首先创建了存储库、控制器和模型,一切都工作得很好,除非我不能将单击的对象传递给add函数。

我可以访问被点击对象的参数并正确打印它们,但不能打印对象本身!现在它说的是The argument type 'List<dynamic>' can't be assigned to the parameter type 'ProductModel'.,这很正常,因为product里面有一个列表,在这种情况下,有没有一种方法可以访问特定的产物?

以下是我到目前为止所做的尝试:

我的<<p> strong> CartController 类:
class CartController extends GetxController {
final CartRepo cartRepo;
CartController({required this.cartRepo});
Map<int, CartModel> _cartItems = {};
void addItem(ProductModel product, int quantity) {
_cartItems.putIfAbsent(product.id, () {
print('Adding item to cart');
return CartModel(
id: product.id,
name: product.title,
img: product.image,
quantity: quantity,
price: product.price,
isExist: true);
});
}
}
我的<<p> strong> ProductController 类:
List<dynamic> _productsList = [];
List<dynamic> get productsList => _productsList;
late CartController _cart;
bool _isLoaded = false;
bool get isLoaded => _isLoaded;
int _quantity = 0;
int get quantity => _quantity;
int _inCartItems = 0;
int get inCartItems => _inCartItems + _quantity;
Future<void> getProducts() async {
Response response = await productsRepo.getProductsList();
if (response.statusCode == 200) {
_productsList = [];
_productsList.addAll(response.body);
_isLoaded = true;
update();
} 
}
void addItem(ProductModel product) {
_cart.addItemToCart(product, _quantity);
}

下面是我的UI:

Widget _buildBottomContainer() {
var products = Get.find<ProductsController>().productsList;
Get.find<ProductsController>().initProduct(Get.find<CartController>());
return Container(
padding: EdgeInsets.all(16),
child: GetBuilder<ProductsController>(
builder: (prods) {
return Row(
children: [
OutlinedButton(
onPressed: () {},
child: Icon(Icons.shopping_bag_outlined,
color: style.appColor),
style: style.outlineButton()),
SizedBox(width: 16),
Expanded(
child: ElevatedButton(
onPressed: () {
prods.addItem(ProductModel.fromJson(products[0]));
},
child: Text('Buy'),
style: style.simpleButton(),
)),
],
);
},
));
}

通过为每个产品添加特定的id,然后将其作为路由参数传递来解决。

最新更新