Dictionary 如何从dart中的map.forEach返回值?

Dictionary 如何从dart中的map.forEach返回值?,dictionary,dart,Dictionary,Dart,我想在映射中搜索一个值 Map<String, dynamic> map; dynamic someThing; map.forEach((String key, dynamic value) { if (value == someThing) { return value; } }); Map; 动态的东西; forEach((字符串键,动态值){ 如果(值==某物){ 返回值; } }); 但我得到这个警告: 不要分配给void.dart(void\u检查)

我想在
映射中搜索一个值

Map<String, dynamic> map;
dynamic someThing;

map.forEach((String key, dynamic value) {
  if (value == someThing) {
    return value;
  }
});
Map;
动态的东西;
forEach((字符串键,动态值){
如果(值==某物){
返回值;
}
});
但我得到这个警告:

不要分配给
void.dart(void\u检查)


如何在没有收到此警告的情况下执行此操作?

收到此警告的原因是
return
语句位于您定义为
forEach
方法参数的子方法中。但由于此方法的签名为
void f(K键,V值)
,因此当您尝试返回某些值时,将收到警告

因此,您可以将其改为这样,这样就不会定义新的子方法:

Map<String, dynamic> map;
dynamic someThing;

for (final value in map.values) {
  if (value == someThing) {
    return value;
  }
}
Map;
动态的东西;
for(映射值中的最终值){
如果(值==某物){
返回值;
}
}

在dart中有两种类型的for-each-映射。forEach
用于遍历每个元素,并返回基于它的内容(如将字符串数组转换为单元格以供显示)

您需要的是一个更常规的
(值中的值)
,在这里您可以更自由地做什么,并且可以随时返回:)

我想当我上次错误地尝试map.forEach时,我也得到了一个不同的警告,告诉我也不要使用它