APP/Dart & Flutter
[Flutter] Key 개념 | Key의 종류
JOKUN
2023. 12. 25. 22:04
key란?
Key는 위젯 트리에서 위젯이 움직일 때마다 현재 상태를 보존하는 역할을 한다.
key는 주로 Element가 Widget을 식별하는 데 사용되며, 대부분의 경우 key를 신경 쓸 필요가 없지만 상태를 유지하고 있는 같은 종류의 위젯을 컬렉션에 더하거나, 제거하거나, 정렬할 때 key가 필요하다.
Key를 활용하려면 위젯 트리에 대한 이해가 필요하다.
Widget 트리가 빌드되면 그 뒤에 Element트리가 생성되는데, Widget 트리가 재구성되면 Widget 자체는 폐기 및 재구성되며 Element는 기본적으로 재사용된다. 그리고 Element가 재사용될 때 새로 재구성된 Widget를 참조하게 된다.
위젯 트리가 변경되었는지 여부는 다음과 같은 순서로 판단하며, 변경되었을 시에 화면을 draw 하고 그렇지 않으면 유지한다.
- 위젯이 동일한 타입인지 비교하고 다를 경우 갱신.
- 같은 key인지 비교해 다르면 갱신. 만약 key를 설정하지 않은 경우는 null로 설정되어 있음
Key의 종류
Key에는 LocalKey와 GlobalKey의 두 종류가 있다.
1. LocalKey (부모 Widget 이하에서 유니크한 키)
- ValueKey : 하나의 정보에서 생성되는 키, 숫자, 문자열 등 값을 넣어서 사용할 수 있다.
- ObjectKey : 객체에서 생성하는 키, 같은 타입이라도 객체의 내용이 다르면 다른 키가 된다.
- UniqueKey : 특정 Widget 내에서 고유 한 키
- PageStorageKey: 페이지 스크롤 위치가 있는 키
2.GlobalKey(앱 내에서 고유한 키)
* 주의할 점은 uniquekey는 자동으로 키를 만들어 주기 때문에 편리하지만 key를 사용해 액세스 할 때는 그 값을 기억할 필요가 있다.
참고하면 좋을 강의 ▶️
해당 강의에서 Key의 개념 부터 Key 종류, 언제 사용하는지의 코드 예시 등을 들어 잘 설명해주기때문에, 강의를 한 번 보고 정리된 걸 보는 게 이해하는데 훨씬 도움 되는 듯하다.
https://www.youtube.com/watch?v=lQB6HjleLMs