핫 리로드, 핫 리스타트 기능은 앱의 변경되는 사항을 빠르게 반영하기 위해 지원하는 기능이다.
사용가능 예시)
단, Dialog 만들 땐 핫 리스타트/풀 리스타트를 하거나 Dialog를 끄고 핫 리로드!
나는 Dialog 만들때 핫 리로드를 하면 context 관련된 에러가 났다.
Dialog와 같은 모달은 특정 BuildContext를 사용하여 생성되는데 hot reload가 실행될 때, 위젯 트리를 재구성하면서 기존 dialog의 context가 더 이상 유효하지 않게 되거나 dialog에 연결된 위젯들이 예상과 다르게 초기화될 수 있다.
리스타트를 사용해야하거나 다이얼로그를 끈 후에 리로드를 해야하더라.
Dart는 JIT 컴파일을 지원한다. 즉, 핫 리로드는 JIT 컴파일의 기능을 활용해 변경된 소스 코드만 컴파일하고 앱에 즉시 반영할 수 있게 되는 것이다.
*JIT(Just-In-Time) 컴파일: 코드의 변경 사항을 실시간으로 감지하고, 변경된 부분만을 동적으로 재컴파일하여 앱에 즉시 반영
*컴파일: 고급언어를 저급언어로 바꿔주는 과정
👉 컴파일이란?
핫리스타트는 앱을 완전히 다시 시작하여 모든 상태를 초기화 하는 것이다. 앱의 모든 상태를 잃어버리고, 새로 시작하므로 main() 부터 호출된다.
사용 예시)
몇몇 특정 상황들에서는 Hot Restart로 수정사항이 앱에 반영되지 않으므로 앱을 완전히 끈 후에 다시 켜야 한다.