【问题标题】:The return type 'bool' isn't a 'void', as required by the closure's context dart flutter返回类型“bool”不是“void”,正如闭包的上下文飞镖颤动所要求的那样
【发布时间】:2021-06-05 21:55:01
【问题描述】:

在返回值时在函数中使用 forEach 循环时出现以下错误。

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

我使用的是 dart null 安全 sdk 版本:">=2.12.0

完全错误:

The return type 'bool' isn't a 'void', as required by the closure's context.dartreturn_of_invalid_type_from_closure

【问题讨论】:

标签: flutter dart


【解决方案1】:

问题是由forEach 中的return true 引起的。 forEach 期待的是 void Function(T) 而不是 bool Function(T)

我认为你想要达到的目标是:

bool validatedValues(List<String> values){
  bool result = false;
  values.forEach((i){
    if (i.length > 3){
      result = true;
    }
  });
  return result;
}

或者,可能更优雅:

bool validatedValues(List<String> values) => values.any((i) => i.length > 3);
  • bool any(bool test(E element));

    如果列表的至少一项由test 验证,则返回trueref

  • bool every(bool test(E element));

    如果列表的所有项目都由func 验证,则返回trueref

【讨论】:

  • 或者,一般来说,更喜欢普通的for循环而不是Iterable.forEach
  • @jamesdlin,为什么会这样?
  • 因为Iterable.forEach 有许多陷阱,但通常没有优势。请参阅我对问题的评论。
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 2021-09-18
  • 2021-08-26
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
相关资源
最近更新 更多