跳到主內容

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