You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中如何将CartItemModel对象列表转换为Map格式列表?

赋值无效的原因

直接写List items = cartItems;无法达成目标,本质是该操作只是复制了原列表的内存引用,列表元素依然是CartItemModel类的自定义实例,完全不是你需要的键值对Map结构。

正确的转换方案

转换的核心逻辑是逐一遍历原购物车列表的每个元素,将每个自定义实例拆解为对应字段的Map结构,最终汇总为目标格式的列表:

  • 快速实现的写法:
List<Map<String, dynamic>> items = cartItems.map((cartItem) {
  return {
    "name": cartItem.name,
    "quantity": cartItem.quantity,
    "price": cartItem.price,
    "currency": cartItem.currency,
  };
}).toList();
  • 可维护性优化:考虑到自定义模型大概率会在多处做序列化操作,可以直接在CartItemModel类内部新增toMap()转换方法,避免重复写拆解逻辑:
class CartItemModel {
  String name, price, currency;
  int quantity;

  CartItemModel({
    this.name,
    this.price,
    this.quantity,
    this.currency = "GBP",
  });

  // 内置Map转换方法
  Map<String, dynamic> toMap() {
    return {
      "name": name,
      "quantity": quantity,
      "price": price,
      "currency": currency,
    };
  }
}

优化后,列表转换的代码会非常简洁:

List<Map<String, dynamic>> items = cartItems.map((item) => item.toMap()).toList();

内容的提问来源于stack exchange,提问作者Sohel Mahmud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 23:36:07