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

时间:2020-06-23 22:31:21

标签: flutter dart dart-null-safety

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

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

  static void noop() {}
}

这对于 null安全性是不可能的,因为工厂构造函数的返回类型显然不能为null。

1 个答案:

答案 0 :(得分:2)

基于https://github.com/dart-lang/language/issues/604,看来工厂构造函数不再可以返回null,所以您不能这样做。

您也可以只使用返回非空对象的私有构造函数(无论是否为factory)。这仍然会阻止在库外部实例化该类。 (当然,这不会阻止类在库中实例化,但是您可以避免这样做,因为您可以控制自己的库。如果您仍然担心意外实例化,可以将类移到单独的库中。 )

此外,Effective Dart says to avoid such classes