non_exhaustive_switch_statement
由於未匹配到 '{1}',型別 '{0}' 未被 switch 語句完整覆蓋。
描述
#當一個 switch 語句針對一個可窮盡型別,但缺少匹配其可能值的某個或多個 case 時,分析器會生成此診斷資訊。
示例
#以下程式碼會生成此診斷資訊,因為 switch 語句缺少針對值 E.three 的 case,並且 E 是一個可窮盡型別
dart
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
}
}常見修復方法
#為當前未匹配的每個常量新增一個 case
dart
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
break;
case E.three:
}
}如果不需要匹配這些缺失的值,則新增一個 default 子句或一個萬用字元模式
dart
enum E { one, two, three }
void f(E e) {
switch (e) {
case E.one:
case E.two:
break;
default:
}
}但請注意,新增 default 子句或萬用字元模式將導致此可窮盡型別的任何未來值也得到處理,因此您將失去編譯器在 switch 需要更新時發出警告的能力。