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
需要更新时发出警告的能力。