Flutter의 Hot Restart 기능과 활용 방법
Flutter는 빠른 개발을 지원하기 위해 Hot Reload와 Hot Restart 기능을 제공합니다. 특히, Hot Restart는 코드 변경 사항을 완전히 반영하면서도 앱을 다시 실행하지 않고 빠르게 초기화할 수 있는 기능입니다.
이 글에서는 Flutter의 Hot Restart 기능 개념과 활용 방법을 설명하고, 개발 생산성을 높이는 방법을 소개하겠습니다.
1. Hot Restart란?
Hot Restart는 Flutter에서 앱을 완전히 다시 실행하는 기능으로, 기존의 상태(State)를 모두 초기화하고 처음부터 앱을 실행합니다. 이 기능은 Hot Reload보다 더 광범위한 코드 변경을 적용할 수 있지만, 속도가 Hot Reload보다 다소 느립니다.
Hot Restart를 사용하면 다음과 같은 효과를 얻을 수 있습니다.
- 전역 변수 변경 반영
- 상태(State) 초기화
- 클래스 구조 변경 적용
- 플러그인 및 종속성 업데이트 반영
이제 Hot Restart의 동작 원리를 살펴보겠습니다.
2. Hot Restart의 동작 방식
Flutter의 Hot Restart는 다음과 같은 과정을 통해 실행됩니다.
- 현재 실행 중인 Dart 가상 머신(Dart VM)을 종료하고 다시 시작합니다.
- 앱의
main()
함수를 다시 실행하여 새로운 상태로 초기화합니다. - 앱의 모든 전역 변수와 상태(State)가 재설정됩니다.
이제 실제로 Hot Restart를 사용하는 방법을 살펴보겠습니다.
3. Hot Restart 사용 방법
Flutter 프로젝트에서 Hot Restart를 사용하려면 다음과 같이 실행합니다.
(1) Flutter 앱 실행
flutter run
(2) Hot Restart 실행
터미널에서 다음 단축키를 사용하여 Hot Restart를 실행할 수 있습니다.
- Mac / Linux:
shift + r
입력 - Windows:
shift + r
입력 - VS Code:
Ctrl + Shift + F5
또는Stop → Start
- Android Studio:
Flutter Hot Restart 버튼
클릭
이제 Hot Restart가 어떻게 동작하는지 간단한 예제를 실행해보겠습니다.
4. Hot Restart 예제
다음 코드는 카운터 값을 증가시키는 간단한 예제입니다.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CounterPage(),
);
}
}
class CounterPage extends StatefulWidget {
@override
_CounterPageState createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Hot Restart 예제")),
body: Center(
child: Text(
'카운터: $_counter',
style: TextStyle(fontSize: 24),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
child: Icon(Icons.add),
),
);
}
}
Hot Restart 상태 초기화 테스트
- 앱을 실행한 후 카운터를 몇 번 증가시킵니다.
- Hot Reload(
r
)를 실행하면 숫자가 유지됩니다. - Hot Restart(
shift + r
)를 실행하면 숫자가 0으로 초기화됩니다.
Hot Restart를 실행하면 상태(State)가 초기화되는 것을 확인할 수 있습니다.
5. Hot Reload와 Hot Restart 비교
기능 | Hot Reload | Hot Restart |
---|---|---|
앱 상태 유지 | 유지됨 | 초기화됨 |
속도 | 빠름 | 느림 |
전역 변수 변경 | 적용되지 않음 | 적용됨 |
클래스 구조 변경 | 적용되지 않음 | 적용됨 |
플러그인 변경 | 적용되지 않음 | 적용됨 |
Hot Reload는 UI 및 일부 로직 변경에 적합하며, Hot Restart는 앱의 구조적 변경을 반영할 때 유용합니다.
6. Hot Restart가 필요한 경우
다음과 같은 변경 사항이 있을 경우 Hot Restart가 필요합니다.
- 전역 변수 수정
- 새로운 플러그인 추가
- 새로운 클래스나 메서드 추가
- 앱의 루트(main.dart) 변경
이런 경우에는 Hot Reload를 실행해도 변경 사항이 반영되지 않으므로 Hot Restart를 수행해야 합니다.
결론
Flutter의 Hot Restart 기능을 활용하면 앱의 상태를 초기화하면서 코드 변경 사항을 반영할 수 있습니다.
- Hot Reload: UI 변경 시 빠르게 적용
- Hot Restart: 전역 변수 변경 및 상태 초기화
- Hot Restart 실행 방법:
shift + r
또는 IDE 버튼 사용
이제 Hot Restart를 활용하여 더욱 효율적인 Flutter 개발을 경험해 보세요!
'Flutter' 카테고리의 다른 글
Flutter의 Dart DevTools 사용법과 활용 방법 (0) | 2025.03.28 |
---|---|
Flutter의 디버깅(Debugging) 방법과 활용 (0) | 2025.03.28 |
Flutter의 Hot Reload 기능과 활용 방법 (0) | 2025.03.27 |
Flutter의 코드 스플리팅(Code Splitting) 방법 (0) | 2025.03.27 |
Flutter의 네트워크 성능 최적화 방법 (0) | 2025.03.27 |