首页 > 解决方案 > Flutter/Dart 运行时类型的冻结对象

问题描述

我需要切换我的@freezed 对象的运行时类型。简单的命名是行不通的

case Person:

但调试器说它是这样的:

_$_Person

我猜这是私有的,所以我无法正确切换此运行时类型。

有什么想法吗?我真的不想公开这种类型,因为它是以这种方式生成的。

标签: flutterdart

解决方案


您正在尝试做的事情需要模式匹配,而 dart 没有。

通常 switch/case 仅适用于常量和已知值。在您的用例中,您应该使用 if/else:

void doStuff(obj){
    if(obj is Person){
      // true if _$_Person extends Person
    } else {
      // ...
    }
}

推荐阅读