constructor 실행 전에 final fields가 값을 가지는지를 확인하는 등의 초기 설정이 필요한 경우가 있다. 즉, default field에 실행 전에 값이 있도록 하기 위해 Initializer lists에서 초기화 하는 작업을 수행한다.
Point.fromJson(Map<String, double> json)
: x = json['x']!,
y = json['y']! {
print('In Point.fromJson(): ($x, $y)');
}
assert는 개발 모드의 debug중에만 영향을 미친다.
Initializer lists에는 이렇게 debug중에만 실행되는 assert를 넣을 수 있다.
class FirstTwoLetters {
final String letterOne;
final String letterTwo;
FirstTwoLetters(String word)
: assert(word.length >= 2),
letterOne = word[0],
letterTwo = word[1];
}
class FirstTwoLetters {
final String letterOne;
final String letterTwo;
// Create a constructor with an initializer list here:
FirstTwoLetters(String word)
...
}
class FirstTwoLetters {
final String letterOne;
final String letterTwo;
// Create a constructor with an initializer list here:
FirstTwoLetters(String word)
: assert(word.length >= 2),
letterOne = word[0],
letterTwo = word[1];
}
참고 사이트: https://dart.dev/codelabs/dart-cheatsheet#initializer-lists