Flutter 면접 질문: "왜 클래스 기반 위젯을 사용해야 할까?"

2025. 2. 12. 12:32·Flutter
728x90

Flutter 면접에서 가장 기본적이지만 중요한 개념 중 하나가 클래스 기반 위젯(StatefulWidget, StatelessWidget) vs 함수형 위젯(Function Widget) 입니다.

면접관이 다음과 같은 질문을 던진다면 어떻게 대답해야 할까요?

"왜 클래스 기반 위젯을 함수형 위젯 대신 사용하는 것이 좋은가?"

이 질문은 Flutter의 context, const, 성능 최적화, 위젯 라이프사이클 등 중요한 개념들을 이해하고 있는지를 테스트하기 위한 것입니다.


1️⃣ 클래스 기반 위젯이 더 좋은 이유

1. context 유지 가능

  • 클래스 기반 위젯에서는 context가 위젯 인스턴스에 포함되어 있어, 위젯이 재생성되더라도 context를 유지할 수 있습니다.
  • 반면, 함수형 위젯은 context가 함수 스코프 내에만 존재하여 동일한 context를 참조하기 어렵습니다.
  • 예를 들어, showDialog 호출 시 함수형 위젯에서 context를 전달하면 예상과 다르게 동작할 수 있습니다.

2. const 최적화 가능

  • 클래스 기반 위젯에서는 const를 사용할 수 있어 불필요한 리빌드를 방지할 수 있습니다.
  • 반면, 함수형 위젯은 매번 새로운 함수 객체가 생성되므로 const 최적화가 어렵습니다.
class MyWidget extends StatelessWidget {
  const MyWidget({super.key}); // const 적용 가능
  @override
  Widget build(BuildContext context) {
    return Text('Hello');
  }
}

vs

Widget myWidget() { // 함수형 위젯은 const 적용 불가
  return Text('Hello');
}

3. 성능 최적화

  • 함수형 위젯은 Dart의 클로저(Closure) 특성상 매번 새로운 함수 객체가 생성되기 때문에 성능이 저하될 가능성이 있습니다.
  • StatefulWidget과 다르게 함수형 위젯은 특정 상태를 저장할 수 없기 때문에, TextEditingController 같은 객체를 함수형 위젯 내부에서 선언하면 매번 새로운 인스턴스가 생성됩니다.

4. 라이프사이클 사용 가능

  • 클래스 기반 위젯은 initState(), dispose() 같은 라이프사이클 메서드를 사용할 수 있어 API 요청, 이벤트 리스너 등록/해제 등 관리가 용이합니다.
  • 반면, 함수형 위젯은 이러한 라이프사이클을 직접 다룰 수 없기 때문에 별도의 상태 관리(State Management)가 필요합니다.

2️⃣ 함수형 위젯의 장점은 없을까?

반드시 클래스 기반 위젯만 사용해야 하는 것은 아닙니다. 함수형 위젯이 유용한 경우도 있습니다.

✅ 장점

  • 코드가 간결하여 빠르게 UI를 구성할 때 유리함.
  • BuildContext를 자주 사용하지 않는 간단한 UI 요소에는 적합.
  • 불필요한 상태 관리가 필요 없는 경우 가독성이 좋아짐.
Widget simpleWidget() => Text("Hello World");
 

✅ 추천 사용 예시

  • 단순 UI 컴포넌트 (Text, Icon, Button 등)
  • Provider.watch()를 활용하여 상태를 감지하는 경우

3️⃣ 면접에서 추가로 받을 수 있는 질문

면접에서 한 가지 질문에 대한 답변을 하면, 보통 꼬리 질문이 따라옵니다.
아래 질문들에 대한 개념을 이해하고 있으면 면접을 유리하게 진행할 수 있습니다.

1️⃣ BuildContext란 무엇인가?

  • 위젯 트리에서 해당 위젯의 위치 및 상위 위젯 정보를 포함하는 객체.
  • Theme.of(context), Navigator.of(context), MediaQuery.of(context) 같은 메서드에서 사용됨.

2️⃣ const를 사용하면 어떤 최적화가 가능한가?

  • const를 사용하면 위젯이 리빌드되지 않고 재사용 가능하여 성능 최적화에 도움이 됨.

3️⃣ StatefulWidget과 Provider 중 어떤 것이 더 적절한가?

  • 단순한 상태 변경이면 StatefulWidget, 전역 상태 관리가 필요하면 Provider가 더 적합.

4️⃣ 결론

면접관의 의도는 단순히 "클래스 vs 함수형"을 묻는 것이 아니라,
Flutter의 기본 개념(context, const, 성능 최적화, 라이프사이클)에 대한 이해도를 평가하려는 것입니다.

✅ 정리하면?

  • 클래스 기반 위젯은 context 유지, 성능 최적화, 라이프사이클 관리에 유리함.
  • 함수형 위젯은 코드가 간결하고 특정한 경우에는 효율적임.
  • 어떤 위젯을 사용할지는 상황에 따라 적절한 선택을 해야 함.

면접에서 이 질문을 받으면, 위 내용을 바탕으로 자신 있게 답변하면 좋을것 같아요 ! 🚀

728x90
LIST

'Flutter' 카테고리의 다른 글

Dart 3.7 업데이트! 개발자들을 위한 최신 포맷팅 스타일 총정리  (4) 2025.02.14
Xcode에서 Firebase 설정 후 GoogleService-Info.plist를 찾지 못하는 문제 해결하기  (0) 2025.02.13
Flutter에서 SizedBox.shrink()를 활용하여 빈 공간 추가하는 방법  (1) 2025.02.07
Flutter에서 날짜와 시간 선택 유효성 검사 구현하기  (1) 2025.01.20
Flutter에서 반응형 배너 UI와 애니메이션 구현  (1) 2025.01.13
'Flutter' 카테고리의 다른 글
  • Dart 3.7 업데이트! 개발자들을 위한 최신 포맷팅 스타일 총정리
  • Xcode에서 Firebase 설정 후 GoogleService-Info.plist를 찾지 못하는 문제 해결하기
  • Flutter에서 SizedBox.shrink()를 활용하여 빈 공간 추가하는 방법
  • Flutter에서 날짜와 시간 선택 유효성 검사 구현하기
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (183) N
      • Flutter (67)
      • Android (9)
      • Swift (4)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (75) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    개발 이슈
    android
    오늘의 이슈
    기술
    DART
    개발 뉴스
    앱 개발
    앱
    Flutter 기초
    기술 뉴스
    react
    앱개발
    개발
    이슈
    뉴스 모음
    오늘의 뉴스
    플러터
    뉴스
    Flutter
    Dart 기초
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Flutter 면접 질문: "왜 클래스 기반 위젯을 사용해야 할까?"
상단으로

티스토리툴바