키(Key)는 위젯을 식별하는 중요한 도구이다. 위젯을 식별하고, 상태를 보존한다.
플러터는 기본적으로 위젯의 타입으로 각 위젯을 식별한다. (ex. Text, Button, Image)
이때 위젯의 타입이 다르다면 위젯을 식별하는데 문제가 없다. 하지만 같은 타입의 위젯이 여러 개 있을 때 각각을 어떻게 구분할지가 관건이다. 타입만으로는 위젯을 정확히 식별하기 어렵기 때문이다.
ex)
화면에 여러 개의 카드 위젯이 있는 경우 모두 같은 카드 위젯으로 보인다.
만약 한 카드를 다른 위치로 옮기거나, 변경하거나, 삭제한다면 어떤 카드가 변경되었는지 알아야 한다.
UI가 자주 바뀌는 화면에서 Key를 활용하면 Key를 저장해서 사용할 수 있다.
예를 들어 리스트가 삭제됐을 때 전체를 다 그리는게 아니라 기존 오브젝트의 Key를 가지고 재배치를 한다. 변경되지 않은 다른 위젯들은 그대로 유지되어 렌더링 성능이 크게 개선되는 것!
Key는 state를 유지한다. (위젯의 state: 위젯의 표현되는 데이터나 상태나 행위)
특히 StatefulWidget에서 중요한 역할을 하는데 아까의 예시로 리스트가 삭제되었을 때나 스크롤 위치, 텍스트 필드 입력값이 달라져도 이전 값이 종종 유지되어야 하는데
키를 사용하면 이런 상태 정보가 보존된다.
ex) 사용자 인터페이스의 일부가 업데이트 되더라도, 상태를 가진 위젯의 경우 키가 있으면 그 상태를 보존할 수 있어 사용자 경험이 개선된다.