密封类。 Flutter/Dart 中“库”的含义

问题描述 投票:0回答:1

我正在查看我的项目中的密封用法,但我无法弄清楚。

“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 {}

问题是 - 我正在尝试在文件之外实现密封类,并且我收到下一条消息:

enter image description here

该文件位于同一目录、同一文件夹中。

enter image description here

我相信“图书馆”的含义与我们想象的不同。 在同一个文件中扩展它效果很好。

flutter dart oop modifier sealed
1个回答
0
投票

每个 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 {}
© www.soinside.com 2019 - 2024. All rights reserved.