Есть несколько простых способов объединить эти списки, но они сталкиваются с несколькими проблемами. Например, можете ли вы гарантировать, что списки будут иметь одинаковую длину и порядок списков будет одинаковым (что касается поля «имя» во вложенных картах)?
Если вы можете Если вы не гарантируете одинаковую длину и соответствующий порядок, то вам нужно прибегнуть к чуть более сложному подходу, который является c для решения любой из этих проблем.
void main() {
final list1 = [
{'name': 'eat', 'frequency': 'Daily'},
{'name': 'read', 'frequency': 'Weekly'},
{'name': 'walk', 'frequency': 'Monthly'},
];
final list2 = [
{'name': 'walk', 'count': 4},
{'name': 'eat', 'count': 2},
{'name': 'read', 'count': 3},
];
// Convert the second list into a lookup table
final lookup = Map.fromIterable(list2, key: (m) => m['name'], value: (m) => m);
// Generate the combined list, using the first list as a base
final combined = list1.map((m) => { ...m, ...lookup[m['name']] }).toList();
print(combined);
// Prints (formatted)
// [
// {name: eat, count: 2, frequency: Daily},
// {name: read, count: 3, frequency: Weekly}
// {name: walk, count: 4, frequency: Monthly},
// ]
}