모바일 개발 · 중급
Flutter에서 `Key`의 필요성과 중요성에 대해 설명하고, `ValueKey`, `ObjectKey`, `GlobalKey` 각각의 사용 시나리오와 차이점을 예시와 함께 설명해주세요.
힌트 · Key는 위젯 트리 내에서 동일 타입의 위젯들을 고유하게 식별하여 상태를 보존하고 효율적인 업데이트를 가능하게 합니다. 리스트 아이템의 순서 변경이나 동적 위젯 추가/삭제 시 특히 중요합니다.
위젯 식별상태 유지효율적인 업데이트ValueKeyGlobalKey
모범답안
Flutter에서 Key는 위젯 트리의 위젯을 고유하게 식별하는 데 사용됩니다. 특히 동일한 타입의 위젯이 여러 개 있을 때, Flutter가 위젯 트리를 효율적으로 업데이트하고 상태를 유지하도록 돕습니다. 예를 들어, 리스트 아이템의 순서가 변경될 때 Key가 없으면 Flutter는 위젯을 재사용하는 대신 새로 생성할 수 있습니다.
ValueKey는 위젯의 값을 기반으로 식별할 때 사용합니다. 예를 들어, 리스트 아이템의 데이터 자체를 키로 사용할 수 있습니다. ObjectKey는 특정 객체를 키로 사용하며, 객체의 동일성을 기준으로 위젯을 식별합니다. GlobalKey는 앱 전체에서 위젯의 상태에 접근해야 할 때 사용됩니다. 예를 들어, 폼의 상태를 다른 화면에서 접근하거나, 위젯의 크기나 위치 정보를 얻을 때 유용합니다. GlobalKey는 사용 빈도를 최소화하는 것이 좋습니다. 왜냐하면 위젯 트리의 구조를 변경할 수 있기 때문입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Flutter / Dart 면접 질문
- Flutter에서 Widget Tree와 Element Tree는 어떤 관계를 가지며, 각각의 주요 역할은 무엇인지 설명해주세요. 특히, 두 트리가 존재하는 이유와 동작 원리에 대해 구체적인 예를 들어 설명해주세요.
- Flutter에서 `Provider`와 `BLoC/Riverpod`과 같은 상태 관리 솔루션들의 주요 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적합하다고 생각하시나요? 실제 프로젝트 경험을 바탕으로 비교 설명해주세요.
- Flutter의 `InheritedWidget`이 어떻게 작동하는지 설명하고, 상태 관리 패턴에서 어떤 역할을 수행할 수 있는지 구체적인 사용 사례와 함께 설명해주세요.
- Flutter에서 `StatefulWidget`과 `StatelessWidget`의 생명 주기(Lifecycle)를 비교 설명하고, 각 단계에서 어떤 작업들을 수행할 수 있는지 설명해주세요.
- Flutter 애플리케이션의 성능을 최적화하기 위한 방법들을 3가지 이상 제시하고, 각각의 방법이 어떤 원리로 성능 향상에 기여하는지 설명해주세요.
- Dart 언어에서 `Future`와 `Stream`의 차이점을 설명하고, Flutter 앱에서 각각 어떤 상황에 활용될 수 있는지 실제 코드 예시와 함께 설명해주세요.