앱이 실행될 때 빈 화면이 잠깐 보이는 문제를 Flutter 위젯으로만 해결하려 하면 이미 늦을 수 있다. 첫 프레임 전에는 Android와 iOS가 네이티브 시작 화면을 보여 주므로, 스플래시 설정도 플랫폼 경계에서 확인해야 한다.
스플래시는 로딩 화면이 아니라 시작 전환 화면이다
스플래시는 앱이 준비 중임을 자연스럽게 연결하지만, 긴 작업을 숨기기 위한 화면이 아니다. 네트워크 호출이 끝날 때까지 로고를 오래 보여 주면 사용자는 앱이 멈췄다고 느낄 수 있다. 필요한 초기화는 줄이고, 시간이 걸리는 데이터는 앱 화면에서 진행 상태와 재시도를 제공하는 편이 낫다.
자산과 배경은 작은 화면에서도 확인한다
스플래시용 이미지에는 다양한 비율·해상도·다크 모드에서 잘리지 않는 여백이 필요하다. 로고에 문자를 많이 넣으면 저해상도 기기에서 읽기 어렵다. 설정을 바꾼 뒤에는 시뮬레이터만 보지 말고 실제 대상 플랫폼에서 콜드 스타트와 다크 모드를 확인하자.
예를 들어 밝은 배경에 어두운 로고를 놓았다면, 다크 모드에서도 같은 조합이 읽히는지 먼저 본다. 앱 화면이 처음 뜬 뒤 배경색이 갑자기 바뀌지 않는지도 함께 확인한다. 스플래시와 첫 화면이 완전히 같을 필요는 없지만, 전환이 끊겨 보이면 배경색과 로고 크기부터 비교하면 된다.
생성 도구의 결과도 버전 관리 대상이다
패키지나 생성 도구로 플랫폼 설정을 만들었다면 pubspec 설정과 생성된 네이티브 파일의 관계를 이해해야 한다. Flutter·Android·iOS 버전이 바뀌면 생성 방식도 달라질 수 있으므로, 업데이트 뒤에는 다시 빌드해 시작 화면이 사라지거나 이전 자산이 남지 않았는지 확인한다.
앱 시작 화면을 바꿨다면 핫 리로드 화면만 보지 말고 앱을 완전히 종료한 뒤 다시 연다. 변경이 보이지 않으면 Flutter 첫 화면 위젯보다 생성된 네이티브 자산과 재빌드 여부를 먼저 확인한다.
| 확인 장면 | 기대 결과 | 어긋나면 볼 곳 |
|---|---|---|
| 앱을 완전히 종료 후 시작 | 로고가 잘리지 않고 첫 화면으로 넘어감 | 네이티브 생성 자산·앱 재빌드 |
| 다크 모드 시작 | 배경과 로고 대비 유지 | 다크 자산 설정 |
| Android와 iOS 시작 | 플랫폼별 화면 크기에 맞음 | 플랫폼별 생성 파일 |
실제 기기·에뮬레이터에서 각각 콜드 스타트를 확인한다. 한 플랫폼에서만 정상인 결과로 완료를 판단하지 말고, 로고로 오래 걸리는 네트워크 작업을 가리지도 말자.
핵심 요약
스플래시 화면은 Flutter 첫 프레임보다 먼저 보이는 네이티브 화면이다. 짧고 읽기 쉬운 자산과 배경을 준비하고, 콜드 스타트·다크 모드·여러 해상도에서 확인하자. 긴 초기화를 가리는 용도로 쓰기보다 실제 앱 화면에서 로딩 상태를 다루는 편이 사용자 경험에 낫다.
작성자
기초 개념을 구현과 검증, 실제 운영 판단까지 연결해 기록합니다.

