상황
위와 같이 메서드에서는 괜찮지만 멤버 변수에 this를 할당하면 에러가 발생하는 이유가 무엇일까?
이유
`this`는 class의 `인스턴스`를 참조한다.
아직 `인스턴스`가 생성되지 않은 상태로 멤버 변수에 `this`를 할당하여 초기화를 하니까 에러가 발생하는 것이다.
그리고 메서드는 인스턴스가 있어야만 호출이 가능하므로 `this`를 사용해도 상관이 없는 것이다.
해결 방법
`late`키워드를 사용하면 해결할 수 있다.
`late`는 해당 변수가 사용될 때 초기화가 진행되게 해주는 키워드이다.
즉, 인스턴스가 생성된 후에 해당 변수를 사용한다면 this를 사용할 수 있으므로 문제가 해결이 된다.
심화
late final animationController = AnimationController(
vsync: this,
duration: Duration(seconds: 1),
);
플러터에서 애니메이션을 사용할 때 `this`를 사용한다.
이때 `late`를 사용하는 이유가 바로 지금과 같은 상황 때문 인 것이다.
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL-034] 영화 앱에서 특히 중요한 이미지 캐싱 문제 (0) | 2025.05.14 |
---|---|
[TIL-033] Flutter가 권장하는 앱 아키텍처 가이드 (0) | 2025.05.08 |
[TIL-031] Flutter 실무에서 폰트 스타일 지정하는 법을 찾았다?! (0) | 2025.05.01 |
[TIL-030] - Dart 정규 표현식 (0) | 2025.04.21 |
[TIL-029] - Flutter로 지역 검색 앱 만들기 (1) | 2025.04.20 |