Flutter 17일차

김동준·4일 전

StatefulWidget, StatelessWidget

1. StatelessWidget (정적인 위젯)

위젯이 빌드(화면에 그려진)된 후에는 외부 데이터나 사용자 상호작용에 의해 스스로의 모습이나 상태를 변경할 수 없습니다.

변경되지 않는 텍스트, 아이콘, 정적인 이미지 등 고정된 콘텐츠를 표시할 때 사용합니다.

2. StatefulWidget (동적인 위젯)

위젯의 생명 주기 동안 상태(State)가 변경될 수 있으며, 상태가 변경되면 위젯이 자동으로 화면에 다시 그려집니다 (rebuild).

체크박스, 슬라이더, 사용자 입력, 카운터, 애니메이션 등 시간이 지나거나 사용자 상호작용에 따라 모습이 바뀌어야 하는 모든 동적인 UI에 사용합니다.

💡 StatefulWidget의 구조

StatefulWidget은 이름 그대로 '상태를 가진 위젯'이지만, 실제로 변하는 상태 데이터 자체를 직접 가지지 않습니다. 대신, 상태를 관리하는 별도의 객체를 생성합니다.

StatefulWidget은 다음 두 개의 클래스로 구성됩니다.

StatefulWidget 클래스

위젯 자체를 정의하는 불변(immutable) 클래스입니다.

위젯의 설정(Configuration) 정보를 담고, 유일하게 재정의해야 하는 메서드는 createState()입니다.

createState(): 이 메서드가 호출되어 실제로 변하는 상태 데이터와 로직을 관리할 State 객체를 생성하고 연결해 줍니다.

State 클래스 (상태 객체)

위젯의 생명주기 동안 변경될 수 있는 데이터(상태)와 비즈니스 로직, 그리고 UI를 그리는 build 메서드를 포함하는 클래스입니다.

상태(Data) 보관: 위젯이 다시 그려질 때도 유지되어야 하는 변수들(예: 카운터 앱의 숫자 _counter)을 저장합니다.

build() 메서드 포함: 위젯의 UI를 실제로 그리는 메서드입니다.

setState() 메서드: 이 메서드를 호출하여 상태 데이터를 변경하면, Flutter 프레임워크가 이를 감지하고 해당 위젯의 build() 메서드를 다시 실행하여 변경된 UI를 화면에 반영합니다.

0개의 댓글