dart:对于语法大师,如何在嵌套 class 中交换子树

dart: for the syntax gurus, how to exchange subtree in nested class

我知道如何巧妙地用

替换列表中的单个元素
myDataList = myDataList.map((dataItem) {
        return dataItem.id == event.id ? 
          event.dataUpdatedItem 
        : 
          dataItem;
      }).toList();

在我的例子中,dataItem 是一个嵌套的 class,就像 List<Person> person,我只想更新 person.address of person.id == event.id。我的 event.dataUpdatedItemAddress 类型,event.id 指向 person.id

你们经常给我提供脑筋急转弯,用你们将一页代码压缩成两行代码的巧妙表达。在 class 周围使用包装列表也可以,其中包含要更新的嵌套 class 吗?!

我假设你有办法用新地址创建一个新人,所以我们假设它是 built_value

person = [for (var p in person) 
  if (p.id == event.id) p.rebuild((b) => b..address = event.dataUpdatedItem) 
  else p];

如果Person.address可以直接更新,不需要替换整个列表,所以:

person.firstWhere((p) => p.id == event.id).address = event.dataUpdatedItem;