You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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将它们归入同一个库:

  1. 在主库文件core.dart中声明:
library my_core;
part 'tools.dart';
  1. 在tools.dart中关联主库:
part of my_core;

这样两个文件属于同一个命名库,相互可以访问对方的下划线私有成员。

另外要注意:Dart没有private/protected修饰符,所有非下划线开头的成员都是公开的,只要能导入对应库就能访问。

内容的提问来源于stack exchange,提问作者Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:18:20