패스잇
모바일 개발 · 중급

Flutter에서 `StatefulWidget`과 `StatelessWidget`의 생명 주기(Lifecycle)를 비교 설명하고, 각 단계에서 어떤 작업들을 수행할 수 있는지 설명해주세요.

힌트 · StatelessWidget은 build 메서드만 가지지만, StatefulWidget은 `initState`, `didChangeDependencies`, `build`, `didUpdateWidget`, `dispose` 등 다양한 생명 주기 메서드를 통해 상태 변화에 따른 복잡한 로직을 처리할 수 있습니다.

buildinitStatedidUpdateWidgetsetStatedispose

모범답안

네, Flutter에서 StatefulWidget과 StatelessWidget의 생명 주기를 비교 설명하겠습니다.

StatelessWidget은 상태가 변하지 않는 위젯으로, 생명 주기가 단순합니다. build 메서드만 존재하며, 이 메서드에서 UI를 구성합니다. 한 번 생성되면 다시 그려질 때까지 동일한 UI를 유지합니다.

반면 StatefulWidget은 상태 변화에 따라 UI가 업데이트되는 위젯입니다. 더 복잡한 생명 주기를 가집니다.

  • initState(): 위젯이 처음 생성될 때 딱 한 번 호출됩니다. 초기화 작업을 수행하기에 적합합니다. 예를 들어, 데이터 로딩이나 리스너 등록 등을 할 수 있습니다.
  • didChangeDependencies(): 위젯이 의존하는 데이터가 변경될 때 호출됩니다. InheritedWidget의 변경에 대응하는 로직을 구현할 수 있습니다.
  • build(): UI를 구성하는 메서드입니다. 상태가 변경될 때마다 호출되어 화면을 다시 그립니다.
  • didUpdateWidget(): 위젯의 설정이 변경될 때 호출됩니다. 이전 위젯과 현재 위젯을 비교하여 필요한 업데이트를 수행할 수 있습니다.
  • setState(): UI를 다시 그리도록 Flutter 프레임워크에 알리는 메서드입니다. 이 메서드 호출 후 build 메서드가 다시 실행됩니다.
  • dispose(): 위젯이 제거될 때 호출됩니다. 리소스 해제, 리스너 해제 등을 수행하여 메모리 누수를 방지합니다.

StatefulWidget은 setState를 통해 상태를 변경하고, 이에 따라 build 메서드가 다시 호출되어 UI를 업데이트하는 방식으로 동작합니다. 이러한 생명 주기 메서드들을 적절히 활용하여 동적인 UI를 구현할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Flutter / Dart 면접 질문

← Flutter / Dart 면접 질문 전체 보기