相关疑难解决方法(0)

返回类型“bool”不是“void”,这是闭包上下文 dart flutter 所要求的

forEach当返回值时在函数中使用项目的循环时,我收到以下错误。

bool validatedValues(List<String> values){
    values.forEach((i){
      if (i.length > 3){
        return true;
      }
    });
    return false;
  }
Run Code Online (Sandbox Code Playgroud)

我使用 dart null safety sdk 版本:">=2.12.0 <3.0.0"

完整错误:

The return type 'bool' isn't a 'void', as required by the closure's context.dartreturn_of_invalid_type_from_closure
Run Code Online (Sandbox Code Playgroud)

dart flutter

10
推荐指数
1
解决办法
3万
查看次数

如何等待 forEach 完成异步回调?

示例代码

Map<String,String> gg={'gg':'abc','kk':'kojk'};

Future<void> secondAsync() async {
  await Future.delayed(const Duration(seconds: 2));
  print("Second!");
  gg.forEach((key,value) async{await Future.delayed(const Duration(seconds: 5));
  print("Third!");
});
}

Future<void> thirdAsync() async {
  await Future<String>.delayed(const Duration(seconds: 2));
  print('third');
}

void main() async {
  secondAsync().then((_){thirdAsync();});
}
Run Code Online (Sandbox Code Playgroud)

输出

Second!
third
Third!
Third!
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我想用来等待地图的 foreach 循环完成然后我想打印third
预期的输出

Second!
Third!
Third!
third
Run Code Online (Sandbox Code Playgroud)

dart flutter

6
推荐指数
1
解决办法
3542
查看次数

如何对列表中的所有项目调用函数?

是否有一种惯用的方法将函数应用于列表中的所有项目?

例如,在 Python 中,假设我们希望将列表中的所有字符串大写,我们可以使用循环:

regimentNames = ['Night Riflemen', 'Jungle Scouts', 'The Dragoons', 'Midnight Revengence', 'Wily Warriors']
# create a variable for the for loop results
regimentNamesCapitalized_f = []

# for every item in regimentNames
for i in regimentNames:
    # capitalize the item and add it to regimentNamesCapitalized_f
    regimentNamesCapitalized_f.append(i.upper())
Run Code Online (Sandbox Code Playgroud)

但更简洁的方法是:

capitalizer = lambda x: x.upper()
regimentNamesCapitalized_m = list(map(capitalizer, regimentNames)); regimentNamesCapitalized_m
Run Code Online (Sandbox Code Playgroud)

在 Dart 中对列表中的所有项目调用函数的等效方法是什么?

dart

5
推荐指数
2
解决办法
4007
查看次数

dart 如何在 if 中中断 forEach

我想要一个 list.forEach 和 if forEach ,当这个 if 返回 true 时我想像这样打破这个代码

  list.forEach((element){
       if(element == "a"){
         break
      }
    })
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。

for-loop dart

1
推荐指数
1
解决办法
2207
查看次数

标签 统计

dart ×4

flutter ×2

for-loop ×1