flutter如何让文件限定在库里使用

在Flutter中,如何限制某些文件只能在特定的库(library)内使用,而不被其他库导入?例如,我有一个工具类文件,只想让它被当前库中的其他文件访问,但禁止外部库引用。Dart有没有类似Java的包私有(package-private)或C#的internal修饰符的机制?应该如何实现这种访问控制?

2 回复

在Flutter中,使用partpart of关键字将文件限定在库内使用。例如,在库文件中添加part '文件名.dart';,在子文件中使用part of '库文件名.dart';即可。

更多关于flutter如何让文件限定在库里使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter/Dart 中,可以通过以下方式限定文件仅在库(library)内部使用:

1. 使用 partpart of

主库文件 (lib/main_library.dart):

library my_library;

part 'internal_file.dart';

// 公共接口
class PublicClass {
  void publicMethod() {
    var internal = _InternalClass(); // 可以访问内部类
  }
}

内部文件 (lib/internal_file.dart):

part of my_library;

// 只能在库内部访问
class _InternalClass {
  void _internalMethod() {
    print('内部方法');
  }
}

2. 使用 _ 前缀命名

// 只能在当前文件访问
class _PrivateClass {
  final String _privateField = '私有字段';
  
  void _privateMethod() {
    print('私有方法');
  }
}

3. 目录结构组织

推荐的文件结构:

lib/
├── src/           # 内部实现文件
│   ├── internal_file1.dart
│   └── internal_file2.dart
├── public_api.dart
└── main_library.dart

4. 使用 export 控制公开接口

主库文件:

library my_package;

// 只导出公共部分
export 'src/public_class.dart';
// 不导出内部文件

注意事项

  • part/part of 会将多个文件视为同一个库
  • _ 前缀的标识符只能在定义它们的库中访问
  • 使用 src 目录是 Dart 包的常见做法,表示内部实现

这样就能有效限制文件在库内部使用,对外隐藏实现细节。

回到顶部