首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未处理的异常:无效参数:“CartItemModel”实例

未处理的异常:无效参数:“CartItemModel”实例
EN

Stack Overflow用户
提问于 2021-09-21 11:29:47
回答 1查看 374关注 0票数 0

我正在处理一个商店应用程序,在用户下订单后,我想将该订单详细信息存储在防火墙中。在按下按钮后执行该调用的功能如下

代码语言:javascript
复制
 addOrderDetails() {
final user  = Provider.of<UserProvider>(context, listen: false);
writeOrderDetailsForUser({
  "userId" : user.user.uid,
  "description" : "Cash on delivery",
  "status" : "pending",
  "createdAt": DateTime.now().millisecondsSinceEpoch.toString(),
  "totalPrice" : user.userModel.totalCartPrice,
   "cart" : user.userModel.cart,
  "address" : widget.addressId,
  "phone" : user.userModel.phone,
 }).whenComplete(() async {
  for (CartItemModel cartItem in user.userModel.cart){
    bool value = await user.removeFromCart(cartItem: cartItem);
    if(value) {
      user.reloadUserModel();
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Item has been successfully removed from cart"),));
    }else {
      print(
        "item has not been removed from cart please try again"
      );
    }
  }
  ScaffoldMessenger.of(context).showSnackBar(SnackBar(
    content: Text(
        "Your order has been successfully created, please we will call you in a few minutes to confirm your order"),));
});
changeScreenReplacement(context, NavigationController());

}

代码语言:javascript
复制
Future writeOrderDetailsForUser(Map<String, dynamic> data) async
  {
    await EcommerceApp.firestore
        .collection(EcommerceApp.collectionOrders)
        .document(EcommerceApp.sharedPreferences.getString(EcommerceApp.userUID) + data['createdAt'])
        .setData(data);
  }
}

但是,每当我调用函数时,我都会收到这个错误。

我/颤振(24853):购物车项目是:‘(package:flutter/src/services/message_codecs.dart:419:7)’E/颤振(24853)的实例:错误:flutter/lib/ui/ui_dart_state.cc(199)未处理异常:无效参数:'CartItemModel' E/颤振(24853)实例:#0 StandardMessageCodec.writeValue StandardMessageCodec.writeValue E/flutter (24853):#1 FirestoreMessageCodec.writeValue _channel/utils/firestore_message_codec.dart:83:13) E/颤振(24853):#2 StandardMessageCodec.writeValue (package:flutter/src/services/message_codecs.dart:409:9) E/颤振(24853):#3 FirestoreMessageCodec.writeValue (package:cloud_firestore_platform_interface/src/method_channel/utils/firestore_message_codec.dart:83:13) E/颤振(24853):#4 StandardMessageCodec.writeValue。(package:flutter/src/services/message_codecs.dart:416:9) E/颤振(24853):#5 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:397:8) E/颤振(24853):#6 StandardMessageCodec.writeValue (package:flutter/src/services/message_codecs.dart:414:13) E/颤振(24853):#7 FirestoreMessageCodec.writeValue (package:cloud_firestore_platform_interface/src/method_channel/utils/firestore_message_codec.dart:83:13) E/颤振(24853):#8 StandardMessageCodec.writeValue。(package:flutter/src/services/message_codecs.dart:416:9) E/颤振(24853):#9 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:397:8) E/颤振(24853):#10 StandardMessageCodec.writeValue (package:flutter/src/services/message_codecs.dart:414:13) E/颤振(24853):#11 FirestoreMessageCodec.writeValue (package:cloud_firestore_platform_interface/src/method_channel/utilsE/颤振(24853):#12 (package:flutter/src/services/message_codecs.dart:551:18) E/颤振(24853):#13 (package:flutter/src/services/platform_channel.dart:150:13) E/颤振(24853):#14 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:331:12) E/颤振(24853):#15 (package:cloud_firestore_platform_interface/src/method_channel/method_channel_document_reference.dart:28:43) E/颤振(24853):#16 DocumentReference.setData (package:cloud_firestore/src/document_reference.dart:48:22) E/颤振(24853):#17 _PaymentPageState.writeOrderDetailsForUser (package:maen/screens/placeOrderPayment.dart:349:10) E/颤振(24853):#18 _(package:maen/screens/placeOrderPayment.dart:316:5) E/ PaymentPageState.addOrderDetails (24853):#19 _PaymentPageState.build.(package:maen/screens/placeOrderPayment.dart:297:17)

EN

回答 1

Stack Overflow用户

发布于 2022-05-15 08:39:25

这个问题是由这条线引起的。

代码语言:javascript
复制
 "cart" : user.userModel.cart,

好像你的user.userModel.cart是CartItemModel的列表,

要克服这一问题,您必须将其序列化,然后添加到数据库中,因为数据库对CartItemModel一无所知,

做这样的事:

代码语言:javascript
复制
"cart" : user.userModel.cart.map((e)=>e.toJson()).toList();

CartItemModel中定义toJson函数

由于细节较少,我假设CartItemModel有类似于id , name and price的字段

代码语言:javascript
复制
Map toJson() => {
        'id': id,
        'name': name,
        'price' : price
      };

这应该能解决你的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69268121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档