编写自定义注解
为声明附加元数据
编写自定义注解 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。
注解就是类
自定义注解其实就是一个普通类。写下 @MyTag 时,您是在引用该类的一个实例,将其作为元数据使用。🏷️
定义类
首先声明一个普通类来保存元数据。这里的简单 Todo 注解稍后会携带一条消息和一个所有者。
class Todo {
final String message;
const Todo(this.message);
}const 构造函数规则
注解值必须是编译时常量,因此构造函数必须是const。没有它,您就无法将该类用作注解。
应用您的注解
将 @ 前缀与 const 构造结合使用。这个 @Todo 标签会记录下面的方法仍需完成的工作。
@Todo('Add validation')
void saveForm() {}携带多个字段
您的注解可以包含任意数量的字段。如果希望标签更清晰、更能自我说明,请为构造函数使用命名参数。
class Todo {
final String task;
final String who;
const Todo(this.task, this.who);
}只能使用常量参数
您传入的每个参数本身都必须是常量。字面量、const 对象和枚举值都可以;运行时变量则不行。
无参数标记
有时您只需要一个标志。一个不包含数据的 const 实例可以作为纯粹的标记,附加到声明上。
class Experimental {
const Experimental();
}
const experimental = Experimental();小写便捷常量
公开一个小写的 const 实例后,调用者就能直接写出简洁的 @experimental,而不必每次都写 @Experimental()。
@experimental
void betaFeature() {}它们本身仍然什么也不做
和内置注解一样,您的自定义注解本身没有任何行为。必须有某个对象读取它,它才有用;下一节将介绍这一点。
谁会读取注解
有两类读取者很重要:构建时运行的代码生成器,以及类似反射的工具。它们都会检查您的标签,并根据找到的元数据采取行动。
让注解保持精简
优秀的注解应当简短且声明式。请存储普通数据,而不是逻辑,这样任何工具都能以可预测且安全的方式读取它们。
快速检查
一个类要想作为注解使用,必须具备什么?
回顾
自定义注解是一个带有const构造函数的类。使用 @ 应用它,传入常量参数,之后让工具读取这些元数据。🎉
用 AI 导师学习 Dart — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「编写自定义注解」课时是免费的吗?
是的 — 「编写自定义注解」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。
「编写自定义注解」这节课中我会学到什么?
为声明附加元数据 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Dart Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「编写自定义注解」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Dart Academy 课中编写并运行代码吗?
能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。