如何使一个对象只能被另一个对象实例化,而不将它们放在 Dart 中的同一个文件中?

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

我在文件 a.dart 中有一个对象 A,在 b.dart 中有一个对象 B

因此,B 位于 b.dart 的公共 API 中

我希望 A 成为唯一能够实例化 B 的人。

我可以将 B 移动到 a.dart 中并将其重命名为 _B。这将使 A 能够访问 _B 并且 _B 不会出现在 a.dart 的公共 API 中。

但是 B 有很多依赖项,而且 b.dart 是一个相当大的文件。 我想将 a.dart 和 b.dart 分开,同时仍然只允许 A 实例化 B。

有办法实现吗?

flutter dart package dependencies flutter-dependencies
1个回答
0
投票

这可以通过使用部分文件来实现。

a.dart

part 'b.dart';

class A {
  // _B is visible due to being a part of this file
  _B b = _B();
}

b.dart

part of 'a.dart';

class _B {}
© www.soinside.com 2019 - 2024. All rights reserved.