flutter - Dart 包 - 如何隐藏内部方法和类?

标签 flutter dart package

我正在为 Flutter Apps 开发一个包
有些方法和类只对包本身有用,而不是对将要导入我的包的程序员有用,是否可以隐藏这些方法和类以进一步实现?
例子:
数据服务.dart

export class DataService{

    //Must be visible only for my library
    static notifyDataChanged(InternalEvent internalEvent){ ... }

    //Must be visible for anyone
    static addCallbackOnDataChange(onDataChangeCallback) { ... }

}
内部事件.dart
//Must be visible only for my library as well
export class InternalEvent {
   ...
}

最佳答案

拥有仅包声明的常用方法是将它们放在 lib/src/ 中的库中。目录,而不是导出该库。包中的其他库可以导入仅包库,但不鼓励包外的用户导入lib/src/中的库直接地。 (这并非不可能,只是不鼓励这样做,因为该软件包可以在没有警告的情况下自由更改这些库)。
如果仅包功能需要访问公共(public)类的库私有(private)部分,那么它们需要在同一个库中。传统的方法是在 lib/src/ 的库中声明两者。并仅导出该库中需要公开的部分:

library myPackage;
export "src/allDeclarations.dart" hide Private, Declarations;
// or, preferably, 
export "src/allDeclarations.dart" show Public, Things;
通常,如果绝对必要,您应该只将导出的和非导出的声明放在同一个库中。否则 hide/show列表变得过于繁琐,很容易忘记 hide 中的声明列表。

关于flutter - Dart 包 - 如何隐藏内部方法和类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62486669/

相关文章:

dart - 我可以将 ng-if 指令放在也绑定(bind)到 Controller 的元素上吗

image - 使用 PictureRecorder 保存 Canvas 的图片导致图像为空

r - Windows 上的 R 包检查问题 : package suggested but not available: 'stringi'

python - 导入错误 : No module named pip when trying to install packages

firebase - 如何使用抖动流从Firestore中获取数据

flutter - 根据父级大小按比例缩小小部件中的所有子级

flutter : Unhandled Exception: setState() called after dispose() occurs when refreshing the page

firebase - Firestore数据更改结果在flutter中为空

android - Phone Auth 自动验证在 Flutter Firebase 中不起作用

不使用 IDE 时的 Java 和编译