Is it possible to have a private constructor in dart?

Just create a named constructor that starts with _

class Foo {
  Foo._() {}
}

then the constructor Foo._() will be accessible only from its class (and library).


A method without any code must be something like this

class Foo {
  Foo._();
}

Yes, It is possible, wanna add more information around it.

A constructor can be made private by using (_) underscore operator which means private in dart.

So a class can be declared as

class Foo {
  Foo._() {}
}

so now, The class Foo doesn't have a default constructor

Foo foo = Foo(); // It will give compile time error

The same theory applied while extending class also, It's also impossible to call the private constructor if it declares in a separate file.

class FooBar extends Foo {
    FooBar() : super._(); // This will give compile time error.
  }

But both above functionality works if we use them in the same class or file respectively.

  Foo foo = Foo._(); // It will work as calling from the same class

and

 class FooBar extends Foo {
    FooBar() : super._(); // This will work as both Foo and FooBar are declared in same file. 
  }

Tags:

Dart