【问题标题】:Cart Total prices are not updating购物车总价格未更新
【发布时间】:2021-07-08 01:55:32
【问题描述】:

您好!我正在尝试更新我的电子商务应用的购物车总价格。我试图添加功能,但它没有添加和更新价格。很高兴检查我的代码并帮助谢谢。 enter image description here

导入'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;
  }
}

【问题讨论】:

    标签: firebase flutter dart


    【解决方案1】:

    它不会更新,因为您已将总计数据类型创建为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();

    【讨论】:

    • 您好,先生!我希望你做得很好,实际上我已经在堆栈上发布了 2 -3 个查询,但没有人回复。我需要你的帮助,你是唯一帮助我解决我的问题的人,我是新手,请帮帮我。我会等待你的回应。谢谢。
    • 有很多人可以帮助你。如果你在电报上加入这个颤振社区:t.me/FlutterIndia。我在你的个人资料中看不到问题。
    猜你喜欢
    • 2017-04-05
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多