Flutter - 상태(State)란?

2025. 2. 19. 23:23·내일배움캠프 (Flutter 5기)/Flutter
반응형

 

서론

정신없이 최종프로젝트 준비를 하다 보니 어느새 모의 면접 준비단계에 들어섰다.

 

모의면접 시뮬레이션 학습 가이드에는 본인의 답지를 만들어볼 것을 권장한다고 쓰여있다.

예상 문제를 준비해서 미리 공부한다는 느낌으로 대비하면 된다고 하셨다.

 

포커스를 둘 부분은, 말을 잘하는 법이다.

내가 이해한 것을 바탕으로 개념에 대해 잘 설명할 수 있어야 한다.

절대 준비한 자료를 읽으면서 답변하면 안 된다고 하셨다.

실제로 정말 면접을 본다 생각하고 임해야겠다.

 

나의 경험이나 구체적인 예시를 들면 좋다고 하며, 순차적으로 말하는 연습을 해야 한다.

잘 알지 못하거나 하지 못하는 부분에 대해서는 최대한 진실성 있게 말해야 한다.

 

ChatGPT의 도움을 얻어 나만의 답안지를 작성해 봤다.

 


Flutter 숙련

ℚ. Flutter 앱 개발에서 ‘상태’란 무엇인가?

𝔸. 앱이나 위젯의 현재 정보. 위젯이 표시되는 모양을 결정하는 데이터이다.

플러터 앱은 이 상태(State)를 기반으로 화면을 그린다.

상태가 변경되면 UI도 그에 맞게 업데이트된다.

 

위젯에는 Stateless / Stateful Widget의 두 종류가 있다.

 

 

1. Stateless Widget

상태가 변하지 않는 위젯이다.

위젯이란 앱을 구성하는 모든 UI 요소를 말한다. (버튼, 텍스트 등)

Stateless Widget은 텍스트, 이미지, 아이콘 등 한번 정해지면 바뀌지 않는 고정된 값을 지닌다.

 

class MyStatelessWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Hello, Flutter!');
  }
}

 

한번 렌더링(코드를 실제 화면에 표시하는 과정)이 되면 이후에는 변경되지 않는다.

 

<렌더링 과정>

1) 빌드 함수가 실행되며 위젯트리 생성
2) 엘리먼트 트리 생성 - 변하지 않는 구조 저장
3) 렌더 트리 생성 - 실제로 그려질 요소들
4) 프레임워크가 변경사항을 감지하고 다시 그리기 (Rebuild & Repaint)
     : setState() 호출 시 위젯트리 업데이트 / 변경된 부분만 재 렌더링
     - Rebuild(재구성) → 빌드함수 재실행
     - Repaint(다시 그리기) → 디자인 요소 변경 시 렌더트리 업데이트 (skia 엔진 사용)

 

 

2. Stateful Widget

상태가 변할 수 있는 위젯.

사용자의 입력, 또는 비동기 작업 결과에 따라 UI가 반영된다. (체크박스, 스위치, 슬라이더 등)

 

class MyStatefulWidget extends StatefulWidget {
  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Counter: $_counter'),
        ElevatedButton(
          onPressed: _incrementCounter,
          child: Text('Increment'),
        ),
      ],
    );
  }
}

 

setState()를 호출하면 Flutter는 위에서 말한 렌더링 과정을 통해 해당 위젯을 재빌드하여 UI를 업데이트한다.

 

 

3. 상태관리 (State Management)

앱이 복잡해질수록 상태관리를 체계적으로 해야 유지보수가 용이하다.

상태관리에는 다음과 같은 방법들이 있다.

 

  • Provider / Riverpod : 가장 많이 쓰는 패키지. 데이터 공유와 의존성 주입에 적합하다.
  • Bloc / Cubit : 이벤트 기반 상태관리. Flutter앱의 비즈니스 로직을 명확히 분리한다.
  • GetX : 간단한 상태관리, 라우팅 제공 패키지
  • Redux / MobX : 대규모 앱에 적합

 

 

요약

  • 상태(State) : 위젯의 현재 데이터 또는 UI의 상태
  • Stateless Widget : 상태가 변하지 않는 위젯
  • Stateful Widget : 상태가 변경될 수 있는 위젯
반응형

'내일배움캠프 (Flutter 5기) > Flutter' 카테고리의 다른 글

Flutter - 상수 클래스  (0) 2025.02.21
Flutter - ListView  (0) 2025.02.20
디버그용 / 릴리즈용 DB 분기하기 + get 명령어 사용법  (0) 2025.02.18
DataSource / Repository / Implement 에 대한 차이점 정리  (0) 2025.01.24
Firebase API Key 보안설정 (.env)  (0) 2025.01.23
'내일배움캠프 (Flutter 5기)/Flutter' 카테고리의 다른 글
  • Flutter - 상수 클래스
  • Flutter - ListView
  • 디버그용 / 릴리즈용 DB 분기하기 + get 명령어 사용법
  • DataSource / Repository / Implement 에 대한 차이점 정리
청학동버블티
청학동버블티
인터넷 사용법, 컴퓨터 활용법, 스마트폰 활용법, 코딩정보 등 유용한 IT 정보들을 소개합니다.
  • 청학동버블티
    IT 기록
    청학동버블티
    • 전체보기 (27)
      • 개발일지 : 모멘톡(momentalk) (6)
      • IT 공부 (0)
        • CS (0)
        • Flutter (0)
        • Dart (0)
      • 내일배움캠프 (Flutter 5기) (20)
        • Dart (1)
        • Flutter (10)
      • ETC (1)
        • 리뷰 (1)
        • 메모장 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
청학동버블티
Flutter - 상태(State)란?
상단으로

티스토리툴바