Как построить конструкторы Null Factory с нулевой безопасностью?

Обычный шаблон Dart до нулевой безопасности для создания классов-держателей статических методов был следующим:

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

  static void noop() {}
}

Это невозможно с нулевой безопасностью, потому что возвращаемый тип конструктора фабрики явно не допускает значения NULL.

1 ответ

Решение

Исходя из https://github.com/dart-lang/language/issues/604, похоже, что конструкторы фабрики больше не могут возвращать значение null, поэтому вы не можете этого сделать.

В качестве альтернативы вы можете просто использовать частный конструктор (будь то factoryили нет), который возвращает ненулевой объект. Это все равно предотвратит создание экземпляра класса за пределами библиотеки. (Конечно, это не помешало бы создать экземпляр класса в библиотеке, но вы могли бы просто избежать этого, поскольку управляете своей собственной библиотекой. Вы можете переместить класс в отдельную библиотеку, если вас все еще беспокоит случайное создание экземпляра.)

Кроме того, Effective Dart советует избегать таких занятий.

Другие вопросы по тегам