flutter 作为Map值的对象的Access属性

ijnw1ujt  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(137)

有一张Map:
第一个月
键(订单ID)为 Strings,值为自定义 Order 对象,定义为:

// custom object used as Map values
Order(
  String name;
  List<OrderItem> orderItems;
)

字符串
我需要一个函数,该函数以order ID(在 Map 中用作键)和item作为参数,以给定的 orderId 作为键搜索 activeOrders Map的特定键/值对,并将给定的item添加到该键值处的 Order 对象的 orderItems 列表中。
如何访问Order对象的orderItems列表属性并在列表上调用 add 方法来追加新项?

void addItem(String orderId, OrderItem item) {
   // add item to orderItems property of a Map value at the itemId key
}


我尝试在函数内部创建一个全新的Order对象,以替换已经存在的对象值,但每次都创建新对象不是我想要的。目标是通过向列表属性添加新项来修改现有对象属性。

mwyxok5s

mwyxok5s1#

我自作主张地创建了类,以获得命名参数,但你可以使用

({String name, List<OrderItem> orderItems})

字符串
如果你不想上课

class Order {
   final String name;
   final List<OrderItem> orderItems;

   const Order(this.name, this.orderItems);
}

class OrderItem {
   const OrderItem();
}

main() {

   Map<String, Order> activeOrders = {'myKey': Order('myOtherKey', List<OrderItem>.empty(growable: true))};

   void addItem(String orderId, OrderItem item) {
      activeOrders.update(orderId, (value) => value..orderItems.add(item));
   }

   print(activeOrders['myKey']?.orderItems);

   addItem('myKey', OrderItem());
   print(activeOrders['myKey']?.orderItems);
}


请注意,创建的列表必须是可增长的,以便添加项目。

相关问题