switch case 表达式类型 'Type' 必须是 switch 表达式类型 'BankEvent' 的子类型
The switch case expression type 'Type' must be a subtype of the switch expression type 'BankEvent'
当我尝试在 dart 中使用 switch case 时出现此错误。我有一个摘要 class 和两个 class 扩展它。见下方代码
abstract class BankEvent{}
class FetchBanks extends BankEvent{}
class DeleteBank extends BankEvent{
final int bankId;
DeleteBank(this.bankId);
}
我必须在 handleEvents 方法中进行一些实现,这取决于我作为参数接收的 class 实例。但是我在 switch case 的 case 语句中得到了错误(The switch case expression type 'Type' must be a subtype of switch expression type 'BankEvent')。我的 switch case 实现代码如下
handleEvents(BankEvent bankEvent){
switch(bankEvent){
case FetchBanks:
break;
}
}
为什么不直接将 switch 更改为 if 语句,如下所示:
handleEvents(BankEvent bankEvent){
if(bankEvent is FetchBank){
// FetchBank stuff
}else if(bankEvent is DeleteBank){
// DeleteBank stuff
}
}
这行得通而且可读性很强。此外,您可以摆脱 switch 方法。
是啊,我终于找到答案了 research.It 应该写成下面的样子
handleEvents(BankEvent bankEvent){
switch(bankEvent.runtimeType){
case FetchBanks:
break;
}
}
当我尝试在 dart 中使用 switch case 时出现此错误。我有一个摘要 class 和两个 class 扩展它。见下方代码
abstract class BankEvent{}
class FetchBanks extends BankEvent{}
class DeleteBank extends BankEvent{
final int bankId;
DeleteBank(this.bankId);
}
我必须在 handleEvents 方法中进行一些实现,这取决于我作为参数接收的 class 实例。但是我在 switch case 的 case 语句中得到了错误(The switch case expression type 'Type' must be a subtype of switch expression type 'BankEvent')。我的 switch case 实现代码如下
handleEvents(BankEvent bankEvent){
switch(bankEvent){
case FetchBanks:
break;
}
}
为什么不直接将 switch 更改为 if 语句,如下所示:
handleEvents(BankEvent bankEvent){
if(bankEvent is FetchBank){
// FetchBank stuff
}else if(bankEvent is DeleteBank){
// DeleteBank stuff
}
}
这行得通而且可读性很强。此外,您可以摆脱 switch 方法。
是啊,我终于找到答案了 research.It 应该写成下面的样子
handleEvents(BankEvent bankEvent){
switch(bankEvent.runtimeType){
case FetchBanks:
break;
}
}