생성자(Constructor)를 사용해서 객체를 만들 수 있습니다. 생성자의 이름은 ClassName이나 ClassName.identifier를 사용할 수 있습니다. 예를 들어, 아래 코드는 Point()와 Point.fromJson() 생성자를 이용해서 Point 객체를 생성합니다.
var p1 =Point(2, 2);var p2 =Point.fromJson({'x':1, 'y':2});
아래 코드는 위에 코드와 동일한 표현입니다. Dart 언어에서 생성자 이름 앞에 new 키워드를 사용하는 것은 선택 사항입니다.
var p1 =newPoint(2, 2);var p2 =newPoint.fromJson({'x':1, 'y':2});
일부 클래스는 상수 생성자(Constant constructors)를 제공합니다. 상수 생성자를 사용하면 컴파일 타임 상수 객체를 생성하려면 생성자 이름 앞에 const를 붙입니다.
var p =constImmutablePoint(2, 2);
두 개의 동일한 컴파일 타임 상수 객체를 구성하면 하나의 표준 인스턴스가 생성됩니다.
classImmutablePoint {finalint x;finalint y;constImmutablePoint(this.x, this.y);}voidmain() {var a =constImmutablePoint(1, 1);var b =constImmutablePoint(1, 1);// 두 객체는 같은 객체입니다.print("a == b ? ${identical(a, b)}");var c =ImmutablePoint(1, 1);var d =ImmutablePoint(1, 1);// 두 객체는 다른 객체입니다.print("c == d ? ${identical(c, d)}");}
상수 컨텍스트(Context) 내에서 생성자 리터럴 앞에서 const를 생략할 수 있습니다. 아래 예제는 const 맵을 생성하는 코드인데 너무 많은 const 키워드가 사용되었습니다.