← 전체 글로 돌아가기

Flutter

Flutter 모바일 앱에서 key prop으로 인한 레이아웃 깨짐 문제

Flutter의 key는 위젯 상태를 유지하는 중요한 장치다. 레이아웃이 깨질 때는 key 설정, 빌드 모드, flutter doctor부터 확인한다.

Flutter로 리스트를 만들 때 항목을 추가하거나 제거하면 이상하게 레이아웃이 깨진다. StatefulWidget의 상태가 뒤섞이거나, 텍스트가 잘못된 항목에 나타나거나.

이건 대부분 key prop이 없거나 잘못됐을 때다. 하지만 key 설정 자체도 환경과 빌드 모드에 따라 다르게 동작할 수 있다.

먼저 flutter doctor로 환경 확인

flutter doctor -v
flutter run --verbose

Flutter 버전, Dart 버전, SDK 설정, 플러그인 호환성. 이 모든 게 출력된다. 혼자 개발할 때는 이런 환경 설정을 자주 놓친다.

API 응답과 로컬 데이터 비교

서버에서 받은 데이터 구조가 정말로 유니크한 id를 가지고 있는가? 같은 항목이 여러 개 들어왔는가? 로컬 테스트 데이터와 실제 API 응답이 다를 수 있다.

빌드 모드로 확인해보기

Debug 모드에서는 괜찮은데 Release 빌드에서 문제가 나올 수도 있다. 또는 반대로.

원래 증상이 같은 조건에서 다시 나는지 확인한다. 리스트를 추가하고 삭제했을 때 같은 방식으로 깨지는가? 로그나 응답에서 달라진 부분을 적는다. 그러다 보면 key 설정이나 위젯 구조에서 실제 문제를 찾는다. 그 기록이 있으면 다음 번엔 훨씬 빠르게 같은 문제를 해결할 수 있다.