如何构建具有空安全性的空工厂构造函数?

How to build Null Factory Constructors with Null Safety?

创建静态方法持有者 类 空安全之前的常见 Dart 模式如下:

class MyMethodScope {
  /// Prevents instantiation of this class.
  factory MyMethodScope._() => null;

  static void noop() {}
}

使用 null 安全性 是不可能的,因为工厂构造函数的 return 类型显然不可为 null。

基于https://github.com/dart-lang/language/issues/604,工厂构造器不能再return null,所以你不能这样做。

您也可以只使用 return 非空对象的私有构造函数(无论 factory 与否)。这仍然会阻止 class 在库外被实例化。 (当然,它不会阻止 class 在库中被实例化,但你可以避免这样做,因为你控制着你自己的库。你可以将 class 移动到一个单独的库中,如果您仍然担心意外实例化。)

或者只是将 class 声明为 abstract,这是防止 class 被实例化的正常且直接的方法。

此外,Effective Dart says to avoid such classes.