flutter - Flutter/Dart 运行时类型的冻结对象
问题描述
我需要切换我的@freezed 对象的运行时类型。简单的命名是行不通的
case Person:
但调试器说它是这样的:
_$_Person
我猜这是私有的,所以我无法正确切换此运行时类型。
有什么想法吗?我真的不想公开这种类型,因为它是以这种方式生成的。
解决方案
您正在尝试做的事情需要模式匹配,而 dart 没有。
通常 switch/case 仅适用于常量和已知值。在您的用例中,您应该使用 if/else:
void doStuff(obj){
if(obj is Person){
// true if _$_Person extends Person
} else {
// ...
}
}
推荐阅读
- ios - 在 Swift 中按下按钮时返回字符串
- sql - 编写 SQL 查询语句以从表中获取特定用户
- django - 计算相关表中的记录数 - 循环往复
- chainer - chainer 构建以测试 chainerx 失败
- firebase - 如果处理后台消息,firebase_messaging 颤振插件在启动时崩溃
- java - 如何在本地机器上运行的 docker 容器之外公开我的 tomcat 服务器?
- java - 如何从同一个包中访问多个类变量?
- reactjs - 在 React Native 中使用 Expo AV 播放一系列远程音频文件
- ffmpeg - 如何在 NVIDIA GPU 上使用 ffmpeg c lib 将 h264 数据从 rtsp 流直接解码为 cv::Mat 或 cv::cuda::GpuMat 的 BGR24 像素格式?
- java - 当我试图在 BST 中找到最接近 -1 的值时,怎么会得到错误的答案?