如何写 dart 注释

简介: 如何写 dart 注释

无论对于哪门语言,写注释都是很难的,但是难也得写。可能你在设计程序的时候灵光一闪,想到了一个绝佳的思路,但是过了半年一年之后,可能这个思路就想不起来了,代码也看不懂了,更不要说别人能看懂你的代码了。

  1. 不需要出现在文档中的注释都应该使用 //
  2. 需要生成文档的注释 使用 /// 文档注释来注释成员和类型。
  3. 要在文档注释开头有一个单句总结 让文档注释的第一句从段落中分开。
/// Deletes the file at [path].
///
/// Throws an [IOError] if the file could not be found. Throws a
/// [PermissionError] if the file is present but could not be deleted.
void delete(String path) {
  ...
}
复制代码
  1. 如果一个属性同时包含 getter 和 setter,请只为其中一个添加文档。 dart doc 命令会将 getter 和 setter 作为同一个属性进行处理,而如果它们都包含文档注释,dart docs 命令会将 setter 的文档忽略。
/// The pH level of the water in the pool.
///
/// Ranges from 0-14, representing acidic to basic, with 7 being neutral.
int get phLevel => ...
set phLevel(int level) => ...
复制代码
  1. 推荐使用名词短语来开始库和类型注释。
/// A chunk of non-breaking output text terminated by a hard or soft newline.
///
/// ...
class Chunk { ... }
复制代码
  1. 考虑 在文档注释中添加示例代码。
/// Returns the lesser of two numbers.
///
/// ```dart
/// min(5, 3) == 3
/// ```
num min(num a, num b) => ...
复制代码
  1. 给变量,方法,或类型等名称加上方括号,则 dartdoc 会查找名称并链接到相关的 API 文档。括号是可选的,但是当你在引用一个方法或者构造函数时,可以让注释更清晰。可以链接到类的命名构造函数,或 变量,方法,类型等。
/// Throws a [StateError] if ...
/// Similar to [Duration.inDays], but handles fractional days.
/// To create a point, call [Point.new] or use [Point.polar] to ..
复制代码
  1. 把注释文档放到注解之前。
/// A button that can be flipped on and off.
@Component(selector: 'toggle')
class ToggleComponent {}
复制代码

不要把 @Component 放到第一行,要放到注释之后。

  1. 可以用 markdown 来格式代码,但不要滥用。
///
/// This sentence has *two* _emphasized_ words (italics) and **two**
/// __strong__ ones (bold).
///
/// A blank line creates a separate paragraph. It has some `inline code`
/// delimited using backticks.
///
/// * Unordered lists.
/// * Look like ASCII bullet lists.
/// * You can also use `-` or `+`.
///
/// 1. Numbered lists.
/// 2. Are, well, numbered.
/// 1. But the values don't matter.
///
///     * You can nest lists too.
///     * They must be indented at least 4 spaces.
///     * (Well, 5 including the space after `///`.)
///
/// Code blocks are fenced in triple backticks:
///
/// ```dart
/// this.code
///     .will
///     .retain(its, formatting);
/// ```
///
/// The code language (for syntax highlighting) defaults to Dart. You can
/// specify it by putting the name of the language after the opening backticks:
///
/// ```html
/// <h1>HTML is magical!</h1>
/// ```
///
/// Links can be:
///
/// * https://www.just-a-bare-url.com
/// * [with the URL inline](https://google.com)
/// * [or separated out][ref link]
///
/// [ref link]: https://google.com
///
/// # A Header
///
/// ## A subheader
///
/// ### A subsubheader
///
/// #### If you need this many levels of headers, you're doing it wrong
复制代码
  1. 可以用反引号来标代码
/// You can use [CodeBlockExample] like this:
///
/// ```dart
/// var example = CodeBlockExample();
/// print(example.isItGreat); // "Yes."
/// ```
复制代码

总之写注释的时候要简洁,清晰,切中要害。

目录
相关文章
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
4576 3
|
缓存 Kubernetes API
K8S Pod 停止不掉一直处于Terminating状态问题解决
主要是从pod 停止不掉一直处于Terminating到 发现k8s node处于NotReady状态,在发现为什么处于NotReady , 再到发现node 状态因为PLEG is not healthy: pleg was last seen active 等问题
5001 0
K8S Pod 停止不掉一直处于Terminating状态问题解决
|
8月前
|
机器学习/深度学习 安全 前端开发
【账号安全预警】如何基于IP查询进行登录异常识别、账号防盗?
在撞库与账号盗用频发的背景下,IP查询成为登录风控的核心环节。本文以IP数据云、IPnews为例,详解如何通过在线API与本地离线库结合,构建高效登录安全预警体系,实现异常登录的实时识别与阻断,提升账号安全防护能力。
|
5月前
|
人工智能 自然语言处理 API
AI漫剧零代码制作喂饭级教程:OpenClaw阿里云/本地部署+Seed2.0 Skills 实战指南
无需专业剪辑技术、不用复杂软件操作,甚至不用手动绘制分镜——借助OpenClaw与Seed2.0 Skills的组合,2026年普通人也能零门槛制作AI漫剧。从剧本创作、分镜设计到视频合成,全程AI自动化完成,手机端也能快速产出高质量作品。开源项目「AI漫导」(director_ai)已收获1.1k Star,其核心逻辑正是通过OpenClaw集成Seed2.0漫剧专属技能,让漫剧制作从“专业门槛”变为“人人可玩”。
3925 2
|
8月前
|
监控 API Docker
MinerU Docker 部署指南:PDF 结构化解析服务实践
MinerU 是面向开发者与科研用户的 PDF 结构化解析工具,支持将复杂版式、公式符号的科技文献精准转为 Markdown/JSON 等机器可读格式。基于“书生·浦语”大模型预训练需求研发,2.7.0 版本引入 hybrid 后端,融合 pipeline 与 VLM 优势,提升解析精度与多语言 OCR 能力。支持 Docker 部署,提供 vLLM 加速、API 服务与 Gradio 界面,开箱即用,助力科研数据高效处理。
3232 0
|
9月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
59765 11
|
11月前
|
SQL 存储 关系型数据库
通过 select into outfile / load data infile 进行数据导入导出学习笔记
通过 select into outfile / load data infile 进行数据导入导出学习笔记
|
存储 容器
Flutter 有状态Widget 和 无状态Widget
Flutter 有状态Widget 和 无状态Widget
599 0
|
存储 Android开发 iOS开发
iOS不支持HEIC格式的图片显示和标签函数显示问题及解决方案
iOS不支持HEIC格式的图片显示和标签函数显示问题及解决方案
725 0
|
应用服务中间件 Go Android开发
通过外部链接启动 Flutter App(详细介绍及示例)
本文介绍了通过外部链接启动 Flutter App 的两种方式:`firebase_dynamic_links` 和 `app_links`。前者由 Firebase 提供,支持生成分享链接并自动处理未安装应用时的跳转(如跳转到应用商店),但已于2025年8月停止服务;后者则需开发者自行处理未安装应用时的重定向逻辑。文中详细说明了两者的配置步骤、代码实现及注意事项,推荐使用 `app_links` 进行新项目开发。
971 2