前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dart 语法基础

Dart 语法基础

作者头像
用户3562254
发布于 2025-02-05 09:28:12
发布于 2025-02-05 09:28:12
1970
举报
文章被收录于专栏:Dart 语言Dart 语言

Dart 注释

Dart 支持单行注释、多行注释和文档注释。

单行注释

单行注释以 // 开头。 // 和行尾之间的所有内容都被 Dart 编译器忽略。

代码语言:dart
复制
void main() {
  // TODO: 重构为 AbstractLlamaGreetingFactory?
  print('欢迎来到我的羊驼农场!');
}

多行注释

多行注释以 /* 开头,以 */ 结尾。 /**/ 之间的所有内容都被 Dart 编译器忽略(除非注释是文档注释;请参见下一节)。多行注释可以嵌套。

代码语言:dart
复制
void main() {
  /*
   * 这是很多工作。考虑养鸡。

  Llama larry = Llama();
  larry.feed();
  larry.exercise();
  larry.clean();
   */
}

文档注释

文档注释是开头为 ////** 的多行或单行注释。在连续行上使用 /// 与多行文档注释的效果相同。

在文档注释中,分析器会忽略所有文本,除非它包含在方括号中。使用方括号,您可以引用类、方法、字段、顶级变量、函数和参数。方括号中的名称在已记录程序元素的词法作用域中解析。

这是一个带有对其他类和参数引用的文档注释示例:

代码语言:dart
复制
/// 一种驯养的南美骆驼科动物(羊驼)。
///
/// 安第斯文化自前西班牙时代以来就一直将羊驼用作肉类和驮畜。
///
/// 与任何其他动物一样,羊驼也需要吃东西,
/// 所以不要忘记用一些 [Food] [feed] 它们。
class Llama {
  String? name;

  /// 用 [food] 喂你的羊驼。
  ///
  /// 一只典型的羊驼每周吃一捆干草。
  void feed(Food food) {
    // ...
  }

  /// 用 [activity] 活动让你的羊驼锻炼 [timeLimit] 分钟。
  void exercise(Activity activity, int timeLimit) {
    // ...
  }
}

在类的生成的文档中, [feed] 成为指向 feed 方法文档的链接,

[Food] 成为指向 Food 类文档的链接。

要解析 Dart 代码并生成 HTML 文档,您可以使用 Dart 的文档生成工具, dart doc

有关生成的文档示例,请参见

Dart API 文档。

有关如何组织注释的建议,请参见

Effective Dart:文档。

Dart 元数据

使用元数据为代码提供附加信息。元数据注释以字符 @ 开头,后跟编译时常量的引用(例如 deprecated )或对常量构造函数的调用。

所有 Dart 代码都可以使用四种注释: @Deprecated@deprecated@override@pragma 。有关使用 @override 的示例,请参阅 扩展类 。以下是如何使用 @Deprecated 注释的示例:

代码语言:dart
复制
class Television {
  /// 使用 [turnOn] 代替打开电源。
  [!@Deprecated('Use turnOn instead')!]
  void activate() {
    turnOn();
  }

  /// 打开电视电源。
  void turnOn() {...}
  // ···
}

如果您不想指定消息,可以使用 @deprecated 。但是,我们 建议 始终使用 @Deprecated 指定消息。

您可以定义自己的元数据注释。以下是如何定义一个带有两个参数的 @Todo 注释的示例:

代码语言:dart
复制
class Todo {
  final String who;
  final String what;

  const Todo(this.who, this.what);
}

以下是如何使用该 @Todo 注释的示例:

代码语言:dart
复制
@Todo('Dash', 'Implement this function')
void doSomething() {
  print('Do something');
}

元数据可以出现在库、类、typedef、类型参数、构造函数、工厂、函数、字段、参数或变量声明之前,以及 import 或 export 指令之前。

Dart 库与导入

importlibrary 指令可以帮助您创建模块化且可共享的代码库。库不仅提供 API,而且还是隐私单元:以下划线 (_) 开头的标识符仅在库内可见。每个 Dart 文件(及其部分)都是一个 库,即使它不使用 library 指令。

库可以使用 包 进行分发。

注意 要了解为什么 Dart 使用下划线而不是 publicprivate 等访问修饰符关键字,请参阅 SDK issue 33383 。

使用库

使用 import 指定一个库的命名空间如何在另一个库的范围内使用。

例如,Dart Web 应用通常使用 dart:html 库,它们可以这样导入:

代码语言:dart
复制
import 'dart:html';

import 唯一必需的参数是指定库的 URI。

对于内置库,URI 具有特殊的 dart: 模式。

对于其他库,您可以使用文件系统路径或 package: 模式。 package: 模式指定由包管理器(例如 pub 工具)提供的库。例如:

代码语言:dart
复制
import 'package:test/test.dart';

注意 URI 代表统一资源标识符。 URL(统一资源定位符)是一种常见的 URI。

指定库前缀

如果您导入了两个具有冲突标识符的库,则可以为一个或两个库指定前缀。例如,如果库1和库2都具有 Element 类,则您的代码可能如下所示:

代码语言:dart
复制
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;

// 使用 lib1 中的 Element。
Element element1 = Element();

// 使用 lib2 中的 Element。
lib2.Element element2 = lib2.Element();

只导入库的一部分

如果您只想使用库的一部分,可以选择性地导入库。例如:

代码语言:dart
复制
// 只导入 foo。
import 'package:lib1/lib1.dart' show foo;

// 导入除 foo 之外的所有名称。
import 'package:lib2/lib2.dart' hide foo;
延迟加载库

延迟加载 (也称为 懒加载

允许 Web 应用根据需要按需加载库。

当您需要满足以下一项或多项需求时,请使用延迟加载。

  • 减少 Web 应用的初始启动时间。
  • 执行 A/B 测试——例如,尝试算法的替代实现。
  • 加载很少使用的功能,例如可选屏幕和对话框。

这并不意味着 Dart 会在启动时加载所有延迟组件。

Web 应用可以在需要时通过 Web 下载延迟组件。

dart 工具不支持针对 Web 以外的目标的延迟加载。

如果您正在构建 Flutter 应用,

请参阅 Flutter 指南中关于

延迟组件 的延迟加载实现。

undefined

要延迟加载库,首先使用 deferred as 导入它。

代码语言:dart
复制
import 'package:greetings/hello.dart' deferred as hello;

当您需要该库时,使用库的标识符调用 loadLibrary()

代码语言:dart
复制
Future<void> greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

在前面的代码中,

await 关键字会暂停执行,直到库加载完毕。

有关 asyncawait 的更多信息,

请参见 异步支持

您可以多次在库上调用 loadLibrary() 而不出现问题。

库只加载一次。

使用延迟加载时,请记住以下几点:

  • 延迟库的常量在导入文件中不是常量。 请记住,这些常量在延迟库加载之前不存在。
  • 您不能在导入文件中使用延迟库中的类型。 相反,请考虑将接口类型移动到由延迟库和导入文件同时导入的库。
  • Dart 会隐式地将 loadLibrary() 插入到您使用 deferred as 命名空间 定义的命名空间中。 loadLibrary() 函数返回一个 Future

library 指令 {:#library-directive}

要指定库级 文档注释 或 元数据注释 ,

请将它们附加到文件开头的 library 声明。

代码语言:dart
复制
/// 一个非常棒的测试库。
@TestOn('browser')
library;

实现库

有关如何实现包的建议,请参阅

创建包 ,其中包括:

  • 如何组织库源代码。
  • 如何使用 export 指令。
  • 何时使用 part 指令。
  • 如何使用条件导入和导出来实现支持多个平台的库。

来源:Dart 中文开发文档

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
跨链桥是否有安全的未来?
Chainalysis估计,在13次单独的跨链桥黑客攻击中,有20亿美元的加密货币被盗,其中大部分是今年被盗的。到目前为止,对跨链桥的攻击占2022年被盗资金总额的69%。
小将
2022/10/11
7510
跨链桥是否有安全的未来?
什么是跨链桥?
    在过去的几年里,许多新的支持智能合约的公共区块链已经上线,这就产生了加密货币领域跨链互操作性的需求。目前,该领域的开发人员正在努力构建跨链架构,以促进不同区块链之间的通信。 
终有链响
2024/07/29
1530
跨链桥怎么了?谈跨链桥的风险、现在及未来
文章中提到的项目有: 以太坊 2.0[6], Cosmos[7], IBC[8], Layer Zero[9], Solana[10], Serum[11], Optimistic Roll-ups[12], StarkNet[13] , [Terra] (https://www.terra. money/), [THORChain](https://thorchain.org/ "Terra] (https://www.terra. money/ "Terra] (https://www.terra. money/), [THORChain"), [THORChain"), Osmosis[14], Anyswap,[15] Wormhole[16], Ronin Bridge[17], Terra Bridge[18], Avalanche Bridge[19], Ren Bridge, [20] Axie Infinity[21]
Tiny熊
2022/11/07
1.7K0
跨链桥怎么了?谈跨链桥的风险、现在及未来
150亿数字加密货币被盗的真相之后,还能拿什么拯救你,我的交易所!
从去年年底开始,我就一直关注数字加密货币的动态。因为之前有9年的算法对冲基金的从业经验,很自然的,我被加密货币交易动态所吸引了。虽然我并不是加密货币的忠实信徒,但是,我希望对新的交易技术有一个全新的认识。除了ICO狂热之外,加密货币技术中还有一些有趣的创新,尤其是在去中心化交易所的概念。
区块链大本营
2018/08/03
5810
150亿数字加密货币被盗的真相之后,还能拿什么拯救你,我的交易所!
一个月疯狂窃取5.4亿美元,Lazarus Group黑客组织拿钱造火箭
近日,美国财政部指控有朝鲜政府背景的黑客组织Lazarus Group3月从Axie Infinity 侧链 Ronin Network疯狂盗窃了5.4亿美元。
FB客服
2022/06/08
5170
一个月疯狂窃取5.4亿美元,Lazarus Group黑客组织拿钱造火箭
10 大趋势带你预见 DeFi 2020!
本文是加密货币研究平台 Messair 近日发布的《Crypto Theses for 2020》报告的节选部分,将探讨 DeFi(Decentralized Finance,去中心化金融)在接下来的2020年具有哪些趋势,观点仅代表原作者,不构成任何投资意见或建议。Enjoy~
区块链大本营
2020/02/21
5550
10 大趋势带你预见 DeFi 2020!
Plutos 网络简介
Plutos Network 是一个跨链合成发行和衍生品交易平台,为用户引入挖矿激励和 Staking 奖励。通过整合Polkadot、BSC 和 Solana等区块链,实现链上和跨链流动性和交易,Plutos Network 将为用户提供各种可持续、盈利和颠覆性的合成产品的合成发行和交易服务到传统的衍生品市场。
公众号---人生代码
2021/07/08
8000
Plutos 网络简介
跨链桥为什么在DeFi中非常重要?
在区块链生态系统中,最令人兴奋的领域之一是去中心化金融(DeFi),甚至引发了传统金融机构的关注和革新。但是,试图将BNB与ETH进行相互转换的经历,实际上并不像看起来的那么简单。
小将
2022/04/16
3400
跨链桥为什么在DeFi中非常重要?
NFT在DeFi中的用例 NFT相关软件开发
NFTs是在区块链上经过验证的独特数字资产,可以代表从数字艺术到虚拟房地产的任何事物。它们还可以用作抵押品以在 DeFi 中获得贷款,从而创造一种获取资金和为创意项目融资的新方式。NFT 贷款协议的主要好处之一是它们允许更高效的贷款流程。在传统金融中,贷款过程可能漫长而繁琐,涉及大量中介机构和大量文书工作。在 DeFi 中,贷款可以通过 NFT 进行担保,整个过程可以自动化,从而使其更快、更高效。使用 NFT 作为抵押品是它们提供了一种新型资产,可用于在 DeFi 中抵押贷款。与股票或房地产等传统资产不同,NFT 是独一无二的,无法复制。
飞机号dapp119
2023/02/15
8230
NFT在DeFi中的用例 NFT相关软件开发
大会前瞻 | 全能美女王奇君带你认识稳定币及其应用
2018以太坊技术及应用大会·中国 倒计时 2 天 6月3日,中国年度最具影响力的以太坊技术社区大趴:2018以太坊技术及应用大会·中国,将在北京·悠唐皇冠假日酒店举行。邀请到众多国内外顶级开发者参加,以太坊的创立者Vitalik Buterin本人届时也会亲临现场! 这里,有1000+以太坊开发者,以及优质的资本、项目和法律机构,让你一站打尽以太坊全生态! 她曾是4A数字营销广告公司的策略师,也是新东方的雅思讲师;她是资深行业翻译的口译员;也曾担任过全球最大的比特币钱包和区块链浏览器blockchain
区块链大本营
2018/06/19
5160
100 多家 Web3 公司重构互联网的未来
投资者正在向热门的 Web3 技术投入资金。但是 Web3 是如何运作的,谁在构建?从去中心化金融到靠玩游戏赚钱的游戏,我们分析了当今的 Web3 及其对消费者和创作者的意义。
点滴科技资讯
2023/03/01
1.5K0
100 多家 Web3 公司重构互联网的未来
2019年度区块链安全复盘总结
如果说2018年,我们做区块链安全拥有了“上帝视角”,那过去的2019年,我们则收获了“圣母心态”。
区块链大本营
2020/02/21
6110
2019年度区块链安全复盘总结
关于区块链,你绝不能忽视的4个安全问题和5招应对方法!
内容 | 万涛 IDF极安客实验室联合创始人 整理 | Aholiab 说起区块链,虽然为人大肆谈论,却一直绕不过一个令人尴尬的问题——关于数字资产的丢失、被盗问题屡见不鲜,包括之前币安的安全事件也引起了业界的轰动。 那么,区块链安全的现状到底是什么?区块链与加密货币究竟存在哪些安全问题?如何构建安全的智能合约?IDF极安客实验室联合创始人万涛认为,如果不顾安全大谈区块链都是「耍流氓」;如果以安全的名义去鼓吹区块链,却没有实质的行动,则属厚颜无耻。近日,万涛给「区块链大本营」讲了区块链安全的那些事儿。 那
区块链大本营
2018/05/11
1.3K0
2024 年加密领域需要注意的 5 大网络安全威胁
让我们深入研究2023年加密领域的一些关键网络安全趋势,预计这些趋势将持续到 2024 年,对更多加密货币用户造成威胁。
星尘安全
2024/09/15
1380
2024 年加密领域需要注意的 5 大网络安全威胁
什么是加密货币中的流动性挖矿?
在去中心化金融(DeFi)出现之前,加密货币的所有者只能持有或交易它们以从其资产中获利。然而,DeFi 流动性挖矿地出现在某种程度上改变了游戏规则。
小将
2022/09/30
1.6K0
什么是加密货币中的流动性挖矿?
加密货币: 数字货币如何改变金融
上周,Twitter首席执行官Jack Dorsey宣布,他同时经营的金融公司Square将推出一个新的平台,将使用比特币创建去中心化金融项目。在这些天马斯克围绕加密货币习惯性的、持续的网络噪音输出中,你能不给Dorsey的举动以时间吗?Square的项目最终可能会作为一个分水岭被记住,而那也会是去中心化金融,或 "DeFi",最终进入主流的时刻。
用户7358413
2021/07/25
1.3K0
2024 年加密货币领域需要注意的 5 大网络安全威胁
加密货币世界主要存在于数字领域,面临着众多不断变化的网络威胁,这些威胁所带来的风险,给个人和企业组织造成了重大损失。
FB客服
2024/01/04
2980
2024 年加密货币领域需要注意的 5 大网络安全威胁
DeFi中的De是什么意思?这对区块链行业意味着什么?
作者 | Oscar W 翻译 | 火火酱,责编 | Carol 出品 | 区块链大本营(ID:blockchain_camp) 区块链这一概念最早是由Stuart Haber和Scott Stornetta在1991年提出的。直到2008年,中本聪(Nakamoto Satoshi)将第一个区块链概念化,并创造了比特币。从那时起,无数的项目涌现出来,希望能够彻底改变区块链领域。 然而,直到2015年,一位名为 Vitalik Buterin(V 神)的天才创造了以太坊,才迈出了改变的关键性一步。以太坊
区块链大本营
2023/03/31
7480
DeFi中的De是什么意思?这对区块链行业意味着什么?
2019年区块链安全事件总结,全球损失超60亿美元 | 盘点
随着现代化信息技术和应用的快速发展,数字资产这种以计算机信息技术为基础的货币形式应运而生。其可追溯、防伪造、防篡改的特性,提升了交易安全性,2019年已成为业界关注的热点,发展十分迅速。
区块链大本营
2019/12/23
4.4K0
2019年区块链安全事件总结,全球损失超60亿美元 | 盘点
Solana 是 DeFi 的未来吗?
最近几周,区块链 Solana 的本地货币 SOL 的价格飙升。从 8 月 25 日星期三的略高于 67 美元,SOL 已飙升至目前的 145 美元(截至 9 月 6 日),在短短 12 天内上涨了 100% 以上。
公众号---人生代码
2021/09/18
1.4K0
Solana 是 DeFi 的未来吗?
推荐阅读
相关推荐
跨链桥是否有安全的未来?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档