3. 앱 설정 및 최적화
- Flutter 앱을 개발할 때 테마 설정, 성능 최적화, 디버깅 및 배포는 매우 중요한 요소입니다.
- 이 섹션에서는 앱의 설정 및 최적화 방법을 다룹니다.
📌 3-1. 다크모드 및 테마 설정
- Flutter에서는
ThemeData를 사용하여 앱 전체의 스타일을 설정할 수 있습니다.
- 다크모드를 지원하려면
ThemeData.light()와 ThemeData.dark()를 활용해야 합니다.
- 또한,
GetX나 Provider를 사용하여 테마를 동적으로 변경할 수도 있습니다.
✅ 기본 테마 설정
MaterialApp(
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
themeMode: ThemeMode.system,
)
✅ GetX를 활용한 테마 변경
class ThemeController extends GetxController {
RxBool isDarkMode = false.obs;
void toggleTheme() {
isDarkMode.value = !isDarkMode.value;
Get.changeThemeMode(isDarkMode.value ? ThemeMode.dark : ThemeMode.light);
}
}
ElevatedButton(
onPressed: () => Get.find<ThemeController>().toggleTheme(),
child: Text("테마 변경"),
)
🔹 주요 속성
| 속성 | 설명 |
|---|
ThemeData.light() | 기본 밝은 테마 |
ThemeData.dark() | 다크 테마 설정 |
ThemeMode.system | 시스템 설정을 따라감 |
Get.changeThemeMode(ThemeMode.dark) | GetX를 활용한 테마 변경 |
📌 3-2. 성능 최적화
- Flutter 앱의 성능을 최적화하는 방법에는 여러 가지가 있습니다.
- 주요 기법으로 불필요한 위젯 재생성 방지, 효율적인 리스트 사용, 위젯의 재렌더링 최소화 등이 있습니다.
✅ 1. const 키워드 활용
- 위젯을
const로 선언하면 불필요한 위젯 재생성을 방지할 수 있습니다.
const Text("이 텍스트는 재생성되지 않음")
✅ 2. RepaintBoundary 활용
- 화면 전체를 다시 그리는 대신 특정 위젯만 다시 그리도록 설정할 수 있습니다.
RepaintBoundary(
child: Container(
width: 100,
height: 100,
color: Colors.red,
),
)
✅ 3. ListView.builder 활용
ListView.builder는 보이는 항목만 렌더링하여 성능을 최적화합니다.
ListView.builder(
itemCount: 1000,
itemBuilder: (context, index) {
return ListTile(title: Text("아이템 $index"));
},
)
Flutter DevTools를 활용하면 앱의 프레임 속도, CPU 사용량, 메모리 사용량 등을 분석할 수 있습니다.
- 사용 방법
flutter run --profile 명령어 실행
flutter pub global activate devtools
flutter pub global run devtools 실행 후 브라우저에서 확인
🔹 주요 성능 최적화 기법
| 기법 | 설명 |
|---|
const 사용 | 불필요한 위젯 재생성 방지 |
RepaintBoundary | 특정 위젯만 다시 그림 |
ListView.builder | 효율적인 리스트 렌더링 |
Flutter DevTools | 성능 분석 및 디버깅 |
📌 3-3. 디버깅 및 배포
- Flutter에서 디버깅 및 배포를 효율적으로 수행하는 방법을 알아봅니다.
- Flutter에서 UI 디버깅 및 성능 분석을 위해 Flutter DevTools를 사용합니다.
debugPrint("디버깅 메시지 출력")
✅ 2. Debug 모드에서 배너 제거
- Flutter 앱 실행 시 기본적으로 "Debug" 배너가 표시됩니다.
- 이를 제거하려면
MaterialApp의 debugShowCheckedModeBanner 속성을 false로 설정하면 됩니다.
MaterialApp(
debugShowCheckedModeBanner: false,
)
✅ 3. 안드로이드 및 iOS 배포
- Flutter 앱을 Android 및 iOS에 배포하는 방법입니다.
🔹 안드로이드 배포
flutter build apk → APK 파일 생성
flutter build appbundle → Google Play 업로드용 AAB 파일 생성
flutter install → 디바이스에 직접 설치
🔹 iOS 배포
flutter build ios → iOS용 앱 빌드
- Xcode에서 배포 설정 후 App Store Connect에 업로드
🔹 주요 디버깅 및 배포 방법
| 방법 | 설명 |
|---|
Flutter DevTools | UI 디버깅 및 성능 분석 |
debugShowCheckedModeBanner: false | Debug 배너 제거 |
flutter build apk | Android APK 생성 |
flutter build ios | iOS 앱 빌드 및 배포 |
📌 정리
| 항목 | 설명 |
|---|
| 다크모드 & 테마 | ThemeData.light(), ThemeData.dark(), GetX로 동적 변경 |
| 성능 최적화 | const 사용, RepaintBoundary, ListView.builder, DevTools 활용 |
| 디버깅 및 배포 | Flutter DevTools 활용, Debug 배너 제거, flutter build apk/ios |