登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
资源区
›
代码
›
Flutter/Dart第07天:Dart基础语法详解(库、导入和关键 ...
Flutter/Dart第07天:Dart基础语法详解(库、导入和关键字)
[ 复制链接 ]
俏挺喳
2025-6-5 14:43:25
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
Dart官网文档:https://dart.dev/language/libraries
重要说明:
本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。
Dart中的库(Library)
Dart语言对代码的复用下了不少功夫,如前面讲到的Mixin高级特性实现类级别代码复用。本文介绍另一种更宽广的代码复用:
库
。
Dart库可以认为是一组复用类、功能等的集合,它则代表了一个共享的代码模块,任何一个.dart文件都是一个库。
Dart库有一个隐含的规则:凡是以下划线_开头的标识符仅在本库内部可见,其他在库内外部均可见。(Dart没有private/protected/public可见域标识符,那么对应Java语言,下划线_开头为private,其他的为public,Dart没有protected)。
Dart库可以基本可分为3种,建议在使用时严格按照这3类导入库:
Dart中的内置库,即SDK中的库(对于Java语言如java.util.Map),以dart:作为命名空间。
Dart包中心仓库的库(对于Java语言为Maven中心仓库),以package:作为命名空间。
本地文件代码库,以相对路径或者绝对路径作为命名空间。当然,本地代码块也可以使用package作为命名空间,容易和第2中混淆,因此不推荐。
如何使用库(import关键字)
通过import关键字指定在一个库中使用另外一个命名空间的库。
代码样例:
如下代码,我们导入了Dart内置的html库、中心仓库get库,和本地库。
// 内置库
import 'dart:html';
// 中心仓库
import 'package:get/get.dart';
// 本地代码库
import '../01-ntopic-hellodart.dart';
复制代码
指定库前缀(as关键字)
研发过程中,我们有时会导入有相同标识符,那么在使用过程中就会产生冲突,这时可以通过as关键字进行重命名库,同时在使用的时候,增加前缀进行区分。
代码样例:
如下代码,我们导入了
lib1
和
lib2
两个库,它们都有
Element
这个类。
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// `lib1`库中Element类
Element element1 = Element();
// `lib2`库中Element类,通过`lib2`前缀解决冲突
lib2.Element element2 = lib2.Element();
复制代码
导入部分库(show/hide关键字)
我们有时候只需要用到某个库的一部分代码或者类,或者需要排除某个库中指定的代码,通过增加show和hide关键字可实现。
代码样例:
如下代码,我们用到了
lib1
和
lib2
两个库,
lib1
通过show仅导入了
foo
这个标识符(类名、常量名等),而
lib2
通过hide导入除
foo
之外的其他所有标识符。
// 仅导入`foo`
import 'package:lib1/lib1.dart' show foo;
// 导入除`foo`之外所有
import 'package:lib2/lib2.dart' hide foo;
复制代码
延迟导入库(deferred as关键字)
Web应用中通过延迟导入库,可以实现按需加载,如下几种常见的应用场景:
减少Web应用的启动时间。
A/B测试,比如切流不同的算法库。
不常用的功能,比如可选页面、弹窗等。
代码样例:
如下代码,通过deferred as关键字,实现延迟导入库,在实际使用库功能时需要导入库(如:await hello.loadLibrary();),在库加载完成之前,会阻塞代码执行。执行loadLibrary()方法仅实际加载库一次,后续调用该方法不会重复加载。
// 1. 延迟导入库
import 'package:greetings/hello.dart' deferred as hello;
// 2. 实际使用时,使用库前缀
Future<void> greet() async {
// 加载库,加载成功之前阻塞后续代码执行,多次调用仅加载一次
await hello.loadLibrary();
hello.printGreeting();
}
复制代码
特别注意:
延迟导入库中的常量,在该库导入之前并不存在,因此它们并不是
导入库
(即使用它们的文件)中的常量。
延迟导入库在导入之前并不存在,因此
导入库
不能使用它们的类型(包括类、枚举等),可以考虑把公共代码(如基础类、接口等)抽取出来作为单独的库,让延迟导入库和导入库共同导入使用。
当使用deferred as XXX延迟导入库时,Dart隐含的给loadLibrary()增加了XXX命名空间。如上代码,loadLibrary()方法是异步的,返回一个Future。
Dart中的关键字(共67个)
Dart官方文档:https://dart.dev/language/keywords
Dart关键字一共包含67个,本博客不重复列出这67个关键字,仅对关键字进行说明:
尽量避免
使用这些关键字作为标识符,如有必要,表格中有1,2,3上标的关键字在部分常见可以使用作为标识符。
上标为1的关键字与
上下文
有关,离开了上下文,这些关键字可以作为标识符。如show和hide关键在只在导入库上下文文中用到,其他地方可以正常作为标识符。
上标为2的关键字是Dart
内置
的标识符,它们在大部分场景可以使用,但是禁止在类名、类型名和指定库的前缀(其实也是类型的一种)。
上标为3的关键字(共2个:await/yield)限制在异步编程场景使用,在标记为async/async*/sync*同步和异步函数内部,禁止使用。
我的本博客原地址:https://ntopic.cn/p/2023100201
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Dart
Flutter
07天
基础
语法
相关帖子
V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
鸿蒙应用开发UI基础第三节:UIAbility生命周期全解析
Hadoop基础认知——HDFS、YARN、MapReduce在现代体系中的位置与价值
PWM子系统基础学习与应用笔记
USB基础知识学习笔记
零代码零基础!小红书MCP全自动化运营【保姆级安装教程】
Linux下GNU Autotools工具基础教程
AI 学习笔记:Agent 的基础应用
接口测试基础概念
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
11
183
仄谦
2026-02-04
业界
鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
16
111
阎一禾
2026-02-05
业界
鸿蒙应用开发UI基础第三节:UIAbility生命周期全解析
9
945
班闵雨
2026-02-05
安全
Hadoop基础认知——HDFS、YARN、MapReduce在现代体系中的位置与价值
13
807
捡嫌
2026-02-06
安全
PWM子系统基础学习与应用笔记
4
679
费卿月
2026-02-06
安全
USB基础知识学习笔记
0
24
步雪卉
2026-02-14
业界
零代码零基础!小红书MCP全自动化运营【保姆级安装教程】
0
424
宓爰爰
2026-02-17
业界
Linux下GNU Autotools工具基础教程
0
729
胥望雅
2026-02-17
业界
AI 学习笔记:Agent 的基础应用
0
338
倡遍竽
2026-02-18
业界
接口测试基础概念
0
304
羊舌正清
2026-02-19
回复
(27)
事确
2025-10-13 00:41:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
虹姥
2025-10-16 03:44:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
澹台忆然
2025-10-31 02:22:43
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
汝雨竹
2025-11-11 18:39:47
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
用心讨论,共获提升!
锦惺
2025-12-13 17:57:16
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
骆贵
2026-1-1 05:13:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
况雪柳
2026-1-11 00:01:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
孟清妍
2026-1-18 05:33:19
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
泠邸
2026-1-19 10:44:36
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
舒菀菀
2026-1-20 13:47:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
莠畅缕
2026-1-21 12:19:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
命煦砌
2026-1-21 16:17:37
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
伯斌
2026-1-22 13:22:29
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
蒲善思
2026-1-31 16:27:39
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
眩疝诺
2026-2-2 04:37:27
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
聊账
2026-2-3 02:49:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
役魅肋
2026-2-5 02:53:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
赖珊
2026-2-5 03:18:47
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
宗和玉
2026-2-6 09:01:38
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
俏挺喳
2026-2-6 09:01:38
关注
0
粉丝关注
25
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9897
6
韶又彤
9918
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9883
10
遗憩
10006
查看更多
今日好文热榜
3
CSP-J2025游记
6
从挖矿木马入侵到 Docker Rootless 加固,
319
OpenClaw多Agent协作踩坑实录:从翻车到跑
713
【节点】[MainLightShadow节点]原理解析与
633
模拟退火算法
902
Claude Code 的 Skills 可以在 Trae IDE 中
254
付费 AI 用户和免费用户之间,究竟差了什么
699
手把手教你使用vscode开发stm32!
1003
“老东西,你懦弱了”——关于Vibe Coding
926
告别Hyprland/Niri键鼠共享难题:Pynergy
752
解惑|公司员工健身房需要哪些器材?上海皓
519
凸优化数学基础笔记(六):凸集、凸函数与
3
【强化学习的数学原理-赵世钰】随记
389
SeeDance2.0提示词之跳舞女孩
11
SeeDance2.0提示词之跳舞女孩
683
国内零门槛首个免费 开源 7×24小时帮
572
[拆解LangChain执行引擎]非常规Pending Wri
2
读人工智能全球格局:未来趋势与中国位势10
70
AI开发-python-milvus向量数据库(2-8 -mil
3
[LKD/Linux 内核] Linux 中的 进程, 线程