跳到主内容

unnecessary_set_literal

花括号不必要地将此表达式包裹在一个集合字面量中。

描述

#

当一个返回类型为 voidFuture<void>FutureOr<void> 的函数使用了表达式函数体 (=>) 并且返回的值是一个包含单个元素的集合字面量时,分析器会生成此诊断。

虽然语言允许,但从 void 函数返回值是没有用的,因为它无法在调用点被使用。在这种特定情况下,返回值通常是由于对语法存在误解。花括号是不必要的,可以移除。

示例

#

以下代码会产生此诊断,因为传递给 g 的闭包返回类型为 void,但却返回了一个集合

dart
void f() {
  g(() => {1});
}

void g(void Function() p) {}

常见修复

#

移除值周围的花括号

dart
void f() {
  g(() => 1);
}

void g(void Function() p) {}