Flutter
Flutter 테마 적용이 일부만 먹을 때
Flutter 앱에서 테마 설정이 모든 위젯에 일관되게 적용되지 않을 때의 체크리스트.
Flutter 테마 문제는 보통 Theme.of(context) 호출 타이밍, 상속 깊이, 플랫폼 간 차이가 원인이다. 로컬 개발 환경에서는 정상이지만 배포되면 문제가 생길 수 있다.
재현 조건 찾기
어떤 화면에서, 어떤 위젯에서, 어떤 상황에서 테마가 안 먹는지 정확히 파악한다. 모든 텍스트 색이 안 먹는 건지, 특정 위젯만 안 먹는 건지, 어두운 모드에서만 문제인지 등등.
로컬과 배포 비교
Flutter는 빌드 모드에 따라 동작이 다를 수 있다. 디버그 모드에서는 정상이지만 릴리스 모드에서는 문제가 생길 수 있다.
# 디버그 모드 실행
flutter run --verbose
# 릴리스 모드 테스트
flutter run --release
Context와 BuildContext 확인
Theme.of(context)를 호출할 때 전달되는 context가 올바른지 확인한다. 중첩된 위젯 구조에서 context가 잘못되면 테마를 찾을 수 없다. 때론 Theme.of(context, listen: false) 옵션이 필요할 수 있다.
권한과 리소스 로드
Flutter 앱이 필요한 폰트, 이미지, 색상 정의를 제대로 로드했는지 확인한다. pubspec.yaml에 정의했는지, 파일이 실제로 포함되었는지 본다.
# doctor로 환경 확인
flutter doctor -v
실기기와 에뮬레이터 테스트
개발 중에는 에뮬레이터에서 정상이지만 실기기에서는 다를 수 있다. iOS와 Android는 기본 테마가 다를 수 있으므로 둘 다 테스트해야 한다.
API 응답 타입 확인
동적으로 테마를 로드하는 경우 API에서 내려오는 색상값, 폰트 설정 등이 제대로 파싱되는지 확인한다. 특히 타입 mismatch가 있으면 런타임에 에러가 날 수 있다.
원인 파악 후 기록
문제를 찾으면 다음을 기록한다:
- 증상과 재현 방법
- 원인이 된 코드 위치
- 적용한 수정 방법
- 다시 나지 않게 하는 방법
Flutter 개발에서 이런 패턴이 반복되면 다음 문제는 훨씬 빠르게 해결할 수 있다.