我正在处理一个商店应用程序,在用户下订单后,我想将该订单详细信息存储在防火墙中。在按下按钮后执行该调用的功能如下
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());}
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)
发布于 2022-05-15 08:39:25
这个问题是由这条线引起的。
"cart" : user.userModel.cart,好像你的user.userModel.cart是CartItemModel的列表,
要克服这一问题,您必须将其序列化,然后添加到数据库中,因为数据库对CartItemModel一无所知,
做这样的事:
"cart" : user.userModel.cart.map((e)=>e.toJson()).toList();在CartItemModel中定义toJson函数
由于细节较少,我假设CartItemModel有类似于id , name and price的字段
Map toJson() => {
'id': id,
'name': name,
'price' : price
};这应该能解决你的问题
https://stackoverflow.com/questions/69268121
复制相似问题