【发布时间】:2022-01-04 03:53:00
【问题描述】:
我正在 Flutter 上开发一个包。
类中有一些方法只对包本身有用,而不是对将要导入我的包的程序员有用,是否可以将这些方法隐藏在公共类中以进一步实现?
我正在尝试使用 @internal 注释,但我仍然可以看到在包外部标记为内部的方法。
例子:
/// Base abstract class [ImageData]
abstract class ImageData {
/// Create [ImageData] instance.
const ImageData();
/// Create [ImageData] instance from [dto].
///
/// by converting from [dto.ImageData].
@internal
factory ImageData.fromDto(dto.ImageData object) {
switch (object.type) {
case dto.ImageData_Type.pathType:
return PathImageData(path: object.path);
case dto.ImageData_Type.rawImageType:
return RawImageData.fromDto(object.rawImage);
default:
throw const PluginInvokeException();
}
}
/// Create [dto.ImageData] from current instance.
@internal
dto.ImageData toDto();
}
以及来自这个ImageData的其他继承者
class RawImageData extends ImageData {
/// Bytes of image.
final Uint8List data;
/// Describe type of [data] content.
final RawImageDataType type;
/// Wight of image
final int width;
/// Height of image
final int height;
/// Create [RawImageData] instance.
const RawImageData({
required this.data,
required this.type,
required this.width,
required this.height,
}) : super();
/// Create [RawImageData] instance from [dto].
///
/// by converting from [dto.RawImage].
@internal
factory RawImageData.fromDto(dto.RawImage object) {
return RawImageData(
data: Uint8List.fromList(object.raw),
type: typeFromDtoEnum(object.type),
width: object.size.width,
height: object.size.height,
);
}
@override
@internal
dto.ImageData toDto() {
return dto.ImageData(
type: dto.ImageData_Type.rawImageType,
rawImage: toDtoRawImage(),
);
}
}
但我仍然可以看到在包外部标记为内部的方法。如何将这个方法私有化只用于外部包命名空间?
【问题讨论】: