我正在查看我的项目中的密封用法,但我无法弄清楚。
“sealed”修饰符指出“sealed 修饰符防止类在其自己的库之外扩展或实现。密封类是隐式抽象的。”在 dart.dev 页面上。
// sign_result_entity.dart
sealed class SignResult extends Equatable {
@override
List<Object?> get props => [];
}
// sign_result_test.dart
import 'sign_result_entity.dart';
class UniqueSignResult extends SignResult {}
问题是 - 我正在尝试在文件之外实现密封类,并且我收到下一条消息:
该文件位于同一目录、同一文件夹中。
我相信“图书馆”的含义与我们想象的不同。 在同一个文件中扩展它效果很好。
每个 Dart 文件(及其部分)都是一个库,即使它不使用库指令
由于每个 Dart 文件都是一个库,因此您无法从另一个文件扩展
SignResult
。
唯一的方法是使用 part
/part of
。
part 'sign_result_test.dart';
sealed class SignResult extends Equatable {
@override
List<Object?> get props => [];
}
part of 'sign_result_entity.dart';
class UniqueSignResult extends SignResult {}