var는 타입을 자동으로 추론합니다. 하지만, 초기화 하지 않은 경우에는 타입을 추론할 수 없으므로 dynamic
으로 설정됩니다. 이는 피해야 하는 상황입니다.
var를 사용할 때는, 꼭 초기화를 해주기!! 그렇지 않을 경우 dynamic타입으로 되어서 에러를 유발하기 쉬움
var greeting = 'hello world'; // 이 경우 greeting 의 type은 String
var notInitialized;
notInitialized = 'Hi there';
final과 const는 사실 거의 비슷합니다
하지만, 똑같다면 존재하지 않겠죠!
final
은 한번 선언 되면 바뀌지 않는 변수입니다.
const
는 변수가 아닌 상수입니다.
class Hello extends StatelessWidget {
const Hello({
super.key,
required this.label,
});
final String label; //const 로 변경하면 에러가 발생함
Widget build(BuildContext context) {
return Text(label);
}
}
Hello
라는 위젯은 label
을 인자로 받아 보여주는 위젯입니다. 여기서 label
의 값은 컴파일 할때 지정된 값이 아닌, 동적으로 바뀌는 값이기 때문에, final을 사용해야 하고 const를 사용할 경우에는 에러가 발생합니다.
즉 const는 초기화가 되어있는 상수입니다!