你好!我正在尝试更新我的电子商务应用程序的购物车总价。我试图添加功能,但它没有添加和更新价格。很高兴检查我的代码并提供帮助,谢谢。 enter image description here
import 'package:cloud_firestore/cloud_firestore.dart';
import 'cart_modal.dart';
class UserModel {
static const ID = "uid";
static const NAME = "name";
static const EMAIL = "email";
static const STRIPE_ID = "stripeId";
static const CART = "cart";
String _name;
String _email;
String _id;
String _stripeId;
String _priceSum = '0';
// getters
String get name => _name;
String get email => _email;
String get id => _id;
String get stripeId => _stripeId;
// public variables
List<CartItemModel> cart;
String totalCartPrice;
UserModel.fromDocument(DocumentSnapshot doc) {
_name = doc.data()[NAME];
_email = doc.data()[EMAIL];
_id = doc.data()[ID];
cart = _convertCartItems(doc.data()[CART] ?? []);
totalCartPrice = getTotalPrice(cart: doc.data()[CART]);
_stripeId = doc.data()[STRIPE_ID] ?? '';
}
List<CartItemModel> _convertCartItems(List cart) {
List<CartItemModel> convertedCart = [];
for (Map cartItem in cart) {
convertedCart.add(CartItemModel.fromMap(cartItem));
}
return convertedCart;
}
String getTotalPrice({List cart}) {
if (cart == null) {
return '0';
}
for (Map cartItem in cart) {
_priceSum += cartItem["price"];
}
String total = _priceSum;
return total;
}
}
答案 0 :(得分:0)
它不会更新,因为您已将总计数据类型创建为 String
。
并且不能添加两个 string
变量,因为它们被视为文本而不是数字。您需要将它们转换为 integer value
才能进行添加。
您只需将变量 _priceSum
声明为 int _priceSum
。
并且如果您的 cartItem["price"]
是一个字符串值,那么您需要在计算时对其进行转换。你可以通过解析来做到这一点,如下所示
int.parse(cartItem["price"])
所以你的 for 循环看起来像
for (Map cartItem in cart) {
_priceSum += int.parse(cartItem["price"])
}
而且您还必须再次将最终结果转换为字符串,以免出现任何错误。
String total = _priceSum.toString();