如何在Dart中编写静态构造函数?

class Generator
{
   static List<Type> typesList = [];

   //static
   //{ /*static initializations*/}

}

最佳答案

Dart中没有静态构造函数。诸如Shape.circle()之类的命名构造函数是通过类似以下方式实现的

class A {
  A() {
    print('default constructor');
  }
  A.named() {
    print('named constructor');
  }
}

void main() {
  A();
  A.named();
}

您可能也对此factory constructors question感兴趣

更新:几个静态初始化程序解决方法
class A {
  static const List<Type> typesList = [];
  A() {
    if (typesList.isEmpty) {
      // initialization...
    }
  }
}

或者,如果静态内容不打算由该类的用户访问,则可以将其移出该类。
const List<Type> _typesList = [];
void _initTypes() {}

class A {
  A() {
    if (_typesList.isEmpty) _initTypes();
  }
}

10-08 14:55