40 columns | >>> Single initializers can be on one line class Foo extends Bar { final int b; Foo(int a, this.b) : super(a); } <<< class Foo extends Bar { final int b; Foo(int a, this.b) : super(a); } >>> (or not) class Foo extends Bar { final int b; Foo(int a, this.b): super(aLongIdentifier); } <<< class Foo extends Bar { final int b; Foo(int a, this.b) : super(aLongIdentifier); } >>> Multiple initializers are one per line class Foo extends Bar { final int b; Foo(int a, int b) : super(a), this.b = b == null ? 0 : b; } <<< class Foo extends Bar { final int b; Foo(int a, int b) : super(a), this.b = b == null ? 0 : b; } >>> try to keep constructor call together var longIdentifier = new Thing( argument, argument); <<< var longIdentifier = new Thing(argument, argument); >>> splits before ":" if the parameter list does not fit on one line class Foo { Foo(int longArg1, int longArg2, int longArg3) : this._(longArg1); } <<< class Foo { Foo(int longArg1, int longArg2, int longArg3) : this._(longArg1); } >>> indent parameters more if body is a wrapped => class Foo { Foo(firstArgument, secondArgument, third) => "very long body that must wrap"; } <<< class Foo { Foo(firstArgument, secondArgument, third) => "very long body that must wrap"; } >>> wrap initializers past the ":" class Foo { Foo(parameter) : initializer = function(argument, argument), initializer2 = function(argument, argument); } <<< class Foo { Foo(parameter) : initializer = function( argument, argument), initializer2 = function( argument, argument); } >>> split at "=" in initializer class Foo { Foo() : initializer =function(argument, arg); } <<< class Foo { Foo() : initializer = function(argument, arg); } >>> assert in initializer list, short class Foo { Foo() : assert(1), assert(2); } <<< class Foo { Foo() : assert(1), assert(2); } >>> assert in initializer list, long class Foo { Foo() : assert(function(argument, argument, argument)), assert(function(argument, function(argument, argument, argument), argument)); } <<< class Foo { Foo() : assert(function(argument, argument, argument)), assert(function( argument, function(argument, argument, argument), argument)); } >>> split assert with trailing comma class Foo { Foo() : assert(condition,); } <<< class Foo { Foo() : assert( condition, ); } >>> split assert with trailing comma and message class Foo { Foo() : assert(condition, "some message",); } <<< class Foo { Foo() : assert( condition, "some message", ); } >>> trailing commas and initializer lists class A { A(a,):super(); } <<< class A { A( a, ) : super(); } >>> class A { A({a,}):super(); } <<< class A { A({ a, }) : super(); } >>> class A { A(a,):b=1,super(); } <<< class A { A( a, ) : b = 1, super(); } >>> extra space after ":" to line up with later initializers class A { A({a,}):b=1,super(){;} } <<< class A { A({ a, }) : b = 1, super() { ; } } >>> no extra space on a single initializer, even if it splits class A { A(a,):parameter = "some very very long param"; } <<< class A { A( a, ) : parameter = "some very very long param"; } >>> split at name if necessary main() { new VeryLongClassName.veryLongNamedConstructor(); } <<< main() { new VeryLongClassName .veryLongNamedConstructor(); }