Flutter/Dart:库(library)与文件(file)的区别?本地文件是否属于库?
Dart/Flutter 中库(Library)与文件(File)的区别及库级隐私解析
一、核心概念区别
- 文件(File):单个
.dart源码文件,是代码的物理存储单元,可包含类、函数、变量等代码实体。 - 库(Library):Dart代码的逻辑组织单元,它可以是单个文件,也可以是多个文件的集合。默认情况下,每个
.dart文件都是一个独立的匿名库;若通过library关键字显式声明,则成为命名库,还能通过part/part of语法将多个文件合并为同一个库。
二、本地文件是否属于库?
是的,所有.dart文件本质上都是库。哪怕你没写library声明,每个文件都会默认作为匿名库存在。
当你用package:语法导入本地文件(比如import 'package:my_project/utils.dart';),实际是导入了该文件对应的匿名库。这就是为什么你无法访问该文件中下划线开头的成员——下划线实现的是库级私有,只有同一个库内的代码能访问,跨库(哪怕是本地文件)导入就会被限制访问私有成员。
三、库级隐私的扩展用法
如果想让多个本地文件共享私有成员,可以通过part和part of将它们归入同一个库:
- 在主库文件
core.dart中声明:
library my_core; part 'tools.dart';
- 在
tools.dart中关联主库:
part of my_core;
这样两个文件属于同一个命名库,相互可以访问对方的下划线私有成员。
另外要注意:Dart没有private/protected修饰符,所有非下划线开头的成员都是公开的,只要能导入对应库就能访问。
内容的提问来源于stack exchange,提问作者Johnson
相关产品推荐
相关产品推荐

