如何在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感兴趣

Update:几个静电初始化器解决方法

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();
  }
}

Dart相关问答推荐

如何在将构造函数参数赋给最终变量和传递给超级构造函数之前操作它?

如何扩展 Dart 套接字 BroadcastStream 缓冲区大小为 1024 字节?

Dart,后面带感叹号的标识符

执行 `dart2js` 时会生成哪些文件?为什么?

需要一个SkDeletable类型的值,但得到一个Null类型的值

Flutter - 在 null 上调用了 getter 'length'

如何计算列表中元素的出现次数

在Flatter中,依赖项必须指定版本号?

Google Dart支持mixins吗?

有没有可能用Flatter摄像头插件播放视频?

如何在 Flutter DropDown 按钮中搜索

有没有办法知道我的Flatter应用程序使用的是哪个Android API版本?

在Flatter中导航后,无法关注新页面中的文本字段

Flutter:出现键盘时背景图像正在挤压

dart的Completer和Future?

带有 Dart 的 CORS,我如何让它工作?

Dart 构造函数与静态方法;例如,为什么 int.parse() 不是工厂构造函数?

如何将任意数据从 Dart polymer Web 组件传递到单击事件处理函数

如何在 Dart 2 中将 List 更改为 List

dart捕捉clause子句