static constructor in Dart static constructor in Dart dart dart

static constructor in Dart


There is no such thing as a static constructor in Dart. Named constructors such as Shape.circle() are achieved by something like

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

You might also be interested in this factory constructors question

Update: A couple of static initializer work-arounds

class A {  static const List<Type> typesList = [];  A() {    if (typesList.isEmpty) {      // initialization...    }  }}

Or the static stuff can be moved out of the class if it isn't meant to be accessed by users of the class.

const List<Type> _typesList = [];void _initTypes() {}class A {  A() {    if (_typesList.isEmpty) _initTypes();  }}


You can initialize static members by calling the class.member directly, inside the constructor:

class A {  static int a;  static int b;  A(int a, int b) {    A.a ??= a; ///by using the null-equals operator, you ensure this can only be set once    A.b ??= b;  }}main(){  A(5,10);  A(2,4);  assert(A.a == 5);  assert(A.b == 10);}


Inspired by @Mahmoud salah eldien saber answerCreate a singleton, and static variable reference to the singleton variable

void main() {    print('${Singleton.add()}');  print('${Singleton.add()}');  print('${Singleton.add()}');  print('${Singleton.add()}');     }class Singleton {  Singleton();      //static  static List<int> typeList = Singleton.internal()._typeList;  static List<int> add() {    typeList.add(1);    return typeList;  }    List<int> _typeList = [];  factory Singleton.internal() {      var s = Singleton();    for(int i = 0 ; i < 5; i++ ) {      s._typeList.add(2);    }       return s;  }       }

I also want to find a official answer for this question.