SuperAPI AI 工具集

dart-3-updates

编程与开发

查看项目

更新于 10-15 21:39

技能介绍

用途:本技能用于在 Dart 3 中正确、地道地应用语言新特性,包括分支(branches)、模式(patterns)、模式类型与记录(records)。适用场景:编写或重构 switch 语句与 if-else 链;创建数据持有类并决定用 sealed 类、records 还是普通类;从 map、list、record 或对象中解构取值;将 Dart 3 之前的代码现代化,改用模式、穷尽性检查或 switch 表达式。

主要能力:分支方面,if-case 可对单个模式做匹配与解构,模式中声明的变量作用域限于匹配分支;switch 语句每个匹配分支执行后自动跳到末尾,无需 break,可用 default 或 _ 处理未匹配值,用逻辑或模式 case a || b 共享分支体;switch 表达式省略 case、用 => 作为分支体、以逗号分隔,默认分支必须用 ,并产生一个值。穷尽性由编译器在编译期检查,可用 default/、枚举或 sealed 类型满足。守卫子句用 when 在模式后追加条件,可用于 if-case、switch 语句与表达式。

模式与模式类型:模式表示值的形状,用于匹配与解构,可用于变量声明、变量赋值(如交换)、for-in 循环解构以及 switch/if-case。通配符 _ 忽略部分值,列表模式中的 rest 元素 ... 忽略剩余元素。模式类型包括逻辑或、逻辑与、关系、类型转换、空检查、空断言、常量、变量、通配符、括号、列表、rest 元素、map、record 与对象模式,均可嵌套组合。

记录:records 是匿名、不可变、固定大小的聚合,字段类型可不同,通过 $1、$2、.name 等内置 getter 访问,无 setter;形状相同且字段值相等即相等,自动定义 == 与 hashCode。适合从单个函数返回多个值、局部组合少量值、需要结构相等且无额外行为时;类型跨文件复用、需要方法/封装/继承/copyWith、属于公共 API 或长期数据模型时应用类。可用 typedef 提升 record 类型可读性。

迁移流程:先用 switch 表达式替换 if-else 链,再把抽象类层级改为 sealed 类以启用穷尽 switch,接着用解构替代仅用于返回多值的包装类,最后运行 dart analyze 确认穷尽性与类型安全。限制:资料未提供该技能的安装命令、收费、平台或效果信息。