这完全取决于您需要解决方案的“性能”如何。如果我是您,我会首先查看将数据解析为其自己的 Person
类。让我们看一个例子:
@immutable
class Person {
final String id;
final String name;
const Person({
required this.id,
required this.name,
});
@override
bool operator ==(covariant Person other) => id == other.id;
@override
int get hashCode => id.hashCode;
}
这里我覆盖了 ==
运算符,使得具有相同 id
的两个 Person
实例被视为相等。在您覆盖此运算符后,建议您也要覆盖 hashCode
getter,并用于在 Map<T, E>
中查找对象实例。
然后,我会将这些 Person
实例放入 Map<String, Person>
中,其中映射中的 String
键将是 Person
实例的ID,如下所示:
final persons = const {
'aaa': Person(id: 'aaa', name: 'John'),
'aa1': Person(id: 'aa1', name: 'Jane'),
};
完成这些步骤后,您可以轻松地像这样找到您的对象:
final aaa = persons['aaa'];
final aa1 = persons['aa1'];
User
对象的Map<String, User>
会更直接和高效。 - jamesdlinMap<String, User>
替换你的List<Map<...>>
。 - jamesdlin{'Jane': User-Attr-of-Jane, 'John': ---}
这样。由于名称不重复,我可以使用Map
而不需要找到索引来进行调整。有趣的想法。我一直将数据作为列表获取。没想到可以这样做。 - chichi