728x90
공통점
변수 값이 한 번 할당되면 변경할 수 없다.
void main() {
final int myFinal = 20;
const int myConst = 70;
myFinal = 30; // 에러
myConst = 50; // 에러
}
차이점
final
- run-time constant(런타임 시 상수화)
초기화 되는 시점이 앱이 실행되었을 때 또는 사용자가 특정 행동(버튼 클릭 또는 값 입력 등)을 함으로써 값이 할당됨을 의미한다.
- 값이 변경되어야 한다면 build() 내에서 rebuild 될 수 있다.
1. 변수 선언 시 초기화
void main() {
final int myFinal = 20;
}
2. 객체 생성 시 외부 데이터를 받아서 생성자를 통해 초기화
class Person() {
final int age;
String name;
// 생성자
Person(this.age, this.name);
}
void main() {
// 생성자를 통해 값을 초기화
Person p1 = new Person(21, 'Tom');
print(p1.age); // 출력 결과 : 21
}
const
- compile-time constant(컴파일 시에 상수화)
컴파일 시 값이 초기화 되어 있어야 하고 이후에는 절대 변하지 않는다.
즉, 선언과 동시에 값을 초기화를 해야한다.
void main() {
// 에러 발생
const time = DateTime.now();
}
따라서, 위와 같이 할당할 수 없다.
현재 시간은 호출될 때마다 매번 값이 변경되며 런타임 시에 값이 지정되기 때문에
컴파일 시에 상수값이 필요한 const 에는 할당될 수 없다.
이 때에는 final을 사용할 수 있다.
void main() {
final time = DateTime.now();
}
컴파일부터 상수가 되어서 런타임 시에도 그 값이 반드시 유지되어야 하는 변수에는 const 변수를 사용한다.
const 를 사용해서 rebuild 될 필요 없는 위젯들의 rebuild 를 방지함으로써 앱의 성능을 향상 시킬 수 있다.
728x90
'Flutter' 카테고리의 다른 글
[Flutter]iPhone에서 flutter 프로젝트 테스트하기 (0) | 2023.09.14 |
---|---|
[Flutter][해결]zsh: command not found: flutterfire (0) | 2023.08.16 |
[Flutter][해결][FlutterFire초기화]Firebase has not been correctly initialized. (0) | 2023.08.02 |
[Flutter]Future, async, await (0) | 2023.08.01 |
[Flutter][Mac][M1]설치 (0) | 2023.05.04 |