【发布时间】:2021-10-15 09:28:46
【问题描述】:
我需要切换我的@freezed 对象的运行时类型。简单的命名不起作用 f.e
case Person:
但调试器说它是这样的:
_$_Person
我猜这是私有的,所以我无法正确切换此 runtimeType。
有什么想法吗?我真的不想公开这种类型,因为它是这样生成的。
【问题讨论】:
我需要切换我的@freezed 对象的运行时类型。简单的命名不起作用 f.e
case Person:
但调试器说它是这样的:
_$_Person
我猜这是私有的,所以我无法正确切换此 runtimeType。
有什么想法吗?我真的不想公开这种类型,因为它是这样生成的。
【问题讨论】:
您正在尝试做的事情需要模式匹配,而 dart 没有。
通常 switch/case 仅适用于常量和已知值。在您的用例中,您应该使用 if/else:
void doStuff(obj){
if(obj is Person){
// true if _$_Person extends Person
} else {
// ...
}
}
【讨论】: