如何判断映射列表是否包含目标值

例如,我有一个模型Class:

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});
}

从包含嵌套列表的模型中:

数据=&gt;组=&gt;武器

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

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'),
      ],
    ),
  ],
);

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

String myWeapon = 'Dual Uzi';

如何判断mainData中是否包含myWeapon中的"Dual UZI"? 有没有比使用For Loop更有效的方法?

推荐答案

您可以使用any功能来判断是否存在某种质量的东西.对于您的示例,这可能是

bool hasMyWeapon = mainData.data?.any((group) => group.weaponItems?.any((weapon) => weapon.name == myWeapon) ?? false) ?? false;

Flutter相关问答推荐

如何更改默认应用程序启动器/启动屏幕

Flutter—如何在Riverpod中使用全类状态?

功能不起作用的Flutter 块复制

如何使用flutter_local_notification包处理通知操作?

如何使文本表格域在抖动中变圆?

如何使DropDownMenu宽度等于TextFormfield?

无法将新文物与Flutter 项目集成在一起

如何将WebViewWidget和WillPopScope结合起来

在Flutter 中创建自定义形状

构建方法中的性能声明小部件

未处理的异常:第1行第5列出现错误:无效的媒体类型:应为/&;.从API获取数据时在Flutter中

如何使用 Material3 创建带有高度的完美白色提升按钮?

Flutter 使用扩展的 TextField 定位小部件

Flutter ImagePicker - 在 onPressed 中异步获取图像显示 lint 警告

Android 模拟器在 Apple M2 芯片 EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 上随机崩溃

如何使这种相机叠加在Flutter 中?

如何从 Flutter Slider Widget 中移除发光效果?

如何流畅切换画面?

我无法从 Cloud firestore 访问文档字段并在 statefulwidget 类中显示它

Flutter/Dart 返回_Future的实例而不是实际的字符串值