登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
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天
基础
语法
相关帖子
数据网络小知识-VLAN基础及延伸技术简介
OTN基础-DWDM光纤传输原理
C# 扩展方法只会写 this 吗?C# 14 新语法直接把扩展方法玩出了花
位运算基础应用(一)
强化学习基础(RL)笔记
【基础可用版】网络自动化学习笔记-使用paramiko批量配置路由器交换机
多租户下的系统基础表设计
zq—算法基础:时空复杂度(1)
一道基础计算题卡在 40 分,求助判题规则问题
LangChain教程-2、Langchian基础
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
数据网络小知识-VLAN基础及延伸技术简介
0
244
髭赌
2026-03-09
安全
OTN基础-DWDM光纤传输原理
2
542
全愉婉
2026-03-10
业界
C# 扩展方法只会写 this 吗?C# 14 新语法直接把扩展方法玩出了花
1
218
谅潭好
2026-03-10
业界
位运算基础应用(一)
0
83
宿遘稠
2026-03-11
业界
强化学习基础(RL)笔记
0
25
毡轩
2026-03-13
安全
【基础可用版】网络自动化学习笔记-使用paramiko批量配置路由器交换机
0
950
搜娲瘠
2026-03-15
业界
多租户下的系统基础表设计
0
829
颛孙中
2026-03-16
业界
zq—算法基础:时空复杂度(1)
0
391
章绮云
2026-03-18
业界
一道基础计算题卡在 40 分,求助判题规则问题
0
893
矛赓宁
2026-03-19
业界
LangChain教程-2、Langchian基础
0
695
凶契帽
2026-03-26
回复
(31)
事确
2025-10-13 00:41:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
虹姥
2025-10-16 03:44:11
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个有用。
澹台忆然
2025-10-31 02:22:43
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
汝雨竹
2025-11-11 18:39:47
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
锦惺
2025-12-13 17:57:16
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
骆贵
2026-1-1 05:13:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
况雪柳
2026-1-11 00:01:09
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
孟清妍
2026-1-18 05:33:19
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
泠邸
2026-1-19 10:44:36
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
舒菀菀
2026-1-20 13:47:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
莠畅缕
2026-1-21 12:19:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
命煦砌
2026-1-21 16:17:37
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
这个有用。
伯斌
2026-1-22 13:22:29
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
蒲善思
2026-1-31 16:27:39
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
眩疝诺
2026-2-2 04:37:27
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
聊账
2026-2-3 02:49:09
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
役魅肋
2026-2-5 02:53:07
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
赖珊
2026-2-5 03:18:47
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
宗和玉
2026-2-6 09:01:38
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
程序
业界
科技
软件
签约作者
程序园优秀签约作者
发帖
俏挺喳
2026-2-6 09:01:38
关注
0
粉丝关注
25
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9018
9
闰咄阅
9995
10
蓬森莉
9870
查看更多
今日好文热榜
195
Electron41+Vite8.0+DeepSeek桌面端AI助手|
674
OPUS编解码器在audio DSP上的移植和应用
469
SpringCloud进阶--Seata与分布式事务
987
大模型私有化部署指南:从“一键安装”到“
624
大模型私有化部署指南:从“一键安装”到“
885
SpringCloud进阶--Seata与分布式事务
171
SpringCloud进阶--Seata与分布式事务
785
Oracle SQL经典练习50题 | 附答案
205
gitru:一个由 Rust 打造的零依赖 Git 提交
929
gitru:一个由 Rust 打造的零依赖 Git 提交
266
gitru:一个由 Rust 打造的零依赖 Git 提交
855
gitru:一个由 Rust 打造的零依赖 Git 提交
426
gitru:一个由 Rust 打造的零依赖 Git 提交
694
ESP32S3 USB MSC 调试全过程记录
639
瑞芯微工业级芯加持,正点原子RK3562J开发
56
gitru:一个由 Rust 打造的零依赖 Git 提交
784
营销自动化数据驱动 - 多源数据 OLAP 架构
534
C# .NET 周刊|2026年3月1期
151
【GUI-Agent】阶跃星辰 GUI-MCP 解读---(5)
869
LangChain教程-3、Langchian进阶