Flutter:如何检查嵌套列表是否包含值

Sep*_*ika 3 dart flutter

如何检查地图列表是否包含目标值

例如,我有这个模型类:

class Data {
  List<Group>? data;

  Data({this.data});
}

class Group {
  int? id;
  List<Weapon>? weaponItems;
  String? groupName;

  Group({
    this.id,
    this.weaponItems,
    this.groupName,
  });
}

class Weapon {
  int? id;
  String? name;

  Weapon({this.id, this.name});
}
Run Code Online (Sandbox Code Playgroud)

从包含嵌套列表的模型:

数据 => 组 => 武器

或者查看下面的变量以查看名为的结构的详细信息mainData

final Data mainData = Data(
  data: [
    Group(
      id: 1,
      groupName: 'Assault Riffle',
      weaponItems: [
        Weapon(id: 1, name: 'Ak47'),
        Weapon(id: 2, name: 'M4'),
      ],
    ),
    Group(
     id: 2,
      groupName: 'SMG',
      weaponItems: [
        Weapon(id: 3, name: 'MP5'),
        Weapon(id: 4, name: 'Dual UZI'),
      ],
    ),
  ],
);
Run Code Online (Sandbox Code Playgroud)

然后我有一个字符串变量(目标值)

String myWeapon = 'Dual Uzi';
Run Code Online (Sandbox Code Playgroud)

如何检查是否mainData包含“Dual UZI” myWeapon?还有其他比使用更有效的方法吗For Loop

Ivo*_*ers 6

您可以使用该any功能来检查是否存在具有某种质量的东西。对于你的例子,这可能是

bool hasMyWeapon = mainData.data?.any((group) => group.weaponItems?.any((weapon) => weapon.name == myWeapon) ?? false) ?? false;
Run Code Online (Sandbox Code Playgroud)