Flutter의 key는 프레임워크가 rebuild 전반에 걸쳐 위젯을 올바르게 식별하고 보존하도록 돕습니다 — 특히 재정렬되거나 추가/제거되는 리스트 내 stateful 위젯에 중요합니다. key가 언제 필요한지 이해하면 미묘하고 혼란스러운 버그를 방지할 수 있습니다.
key가 하는 일
rebuild 중에 Flutter는 위치와 타입으로 새 위젯을 기존 element/state에 MATCH합니다.
보통은 잘 작동합니다. 그러나 같은 TYPE의 위젯이 리스트에서 재정렬/추가/제거되면
위치 매칭이 혼란스러워짐 → state가 잘못된 위젯에 붙음.
→ KEY는 위젯에 안정적인 IDENTITY를 부여하여 Flutter가 변경 전반에 걸쳐 올바르게 매칭.
전형적인 문제 (key 없이)
STATEFUL 위젯 리스트 (예: 자체 state가 있는 항목). 첫 번째 항목을 제거:
✗ key 없이 → Flutter가 위치로 매칭 → state가 각 위치에 머무름, 따라서
state가 잘못된 항목에 붙은 것처럼 보임 (state가 잘못 "이동"함)
✓ key 있으면 → Flutter가 key로 매칭 → state가 올바른 위젯을 따라감
→ 혼란스러운 버그 발생 (잘못된 체크박스 체크, 잘못된 항목 강조 등).
