← 전체 글로 돌아가기

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 개발에서 이런 패턴이 반복되면 다음 문제는 훨씬 빠르게 해결할 수 있다.