文档注释可以是多行注释,也可以是单行注释,文档注释以 /// 或者 /** 开始。在连续行上使用 /// 与多行文档注释具有相同的效果。推荐使用 /// 是因为其更加简洁。 /***/ 在多行注释中间添加了开头和结尾的两行多余内容。 /// 在一些情况下也更加易于阅读,例如,当文档注释中包含有使用 * 标记的列表内容的时候。
在文档注释中,除非用中括号括起来,否则 Dart 编译器会忽略所有文本。使用中括号可以引用类、方法、字段、顶级变量、函数和参数。括号中的符号会在已记录的程序元素的词法域中进行解析。

如果给变量,方法,或类型等名称加上方括号,则 dartdoc 会查找名称并链接到相关的 API 文档。括号是可选的,但是当你在引用一个方法或者构造函数时,可以让注释更清晰。

  1. /// Throws a [StateError] if ...
  2. /// similar to [anotherMethod()], but ...

要链接到特定类的成员,请使用以点号分割的类名和成员名:

  1. /// Similar to [Duration.inDays], but handles fractional days.

点语法也可用于引用命名构造函数。对于未命名的构造函数,在类名后面加上括号:

  1. /// To create a point, call [Point()] or use [Point.polar()] to ...

下面是一个引用其他类和成员的文档注释:
/// A domesticated South American camelid (Lama glama).
///
/// Andean cultures have used llamas as meat and pack
/// animals since pre-Hispanic times.
class Llama {
String name;

/// Feeds your llama [Food].
///
/// The typical llama eats one bale of hay per week.
void feed(Food food) {
// …
}

/// Exercises your llama with an [activity] for
/// [timeLimit] minutes.
void exercise(Activity activity, int timeLimit) {
// …
}
}
在生成的文档中,[Food] 会成为一个链接,指向 Food 类的 API 文档。

使用散文的方式来描述参数、返回值以及异常信息。

其他语言使用各种标签和额外的注释来描述参数和返回值。

  1. 错误示范❌
  2. /// Defines a flag with the given name and abbreviation.
  3. ///
  4. /// @param name The name of the flag.
  5. /// @param abbr The abbreviation for the flag.
  6. /// @returns The new flag.
  7. /// @throws ArgumentError If there is already an option with
  8. /// the given name or abbreviation.
  9. Flag addFlag(String name, String abbr) => ...

而 Dart 把参数、返回值等描述放到文档注释中, 并使用方括号来引用以及高亮这些参数和返回值。

  1. 正确
  2. /// Defines a flag.
  3. ///
  4. /// Throws an [ArgumentError] if there is already an option named [name] or
  5. /// there is already an option using abbreviation [abbr]. Returns the new flag.
  6. Flag addFlag(String name, String abbr) => ...

把注释文档放到注解之前。

  1. 正确
  2. /// A button that can be flipped on and off.
  3. @Component(selector: 'toggle')
  4. class ToggleComponent {}
  1. 错误示范❌
  2. @Component(selector: 'toggle')
  3. /// A button that can be flipped on and off.
  4. class ToggleComponent {}