StatefulWidget은 변할 수 있는 상태(State)를 갖는 위젯입니다.
State는 위젯이 만들어질 때 동기적으로 읽어지고, 위젯의 수명 동안에 바뀔 수 있는 정보를 말합니다. State가 바뀌면 State.setState() 를 사용해서 State의 변화를 알려야합니다.
동적인 UI를 만들 때 유용합니다.
stless 로 StatelessWidget 를 만들듯이 stful로 쉽게 StatefulWidget 템플릿을 만들 수 있습니다.
StatefulWidget 인스턴스 그 자체는 immutable 합니다. 하지만 createState() 함수를 이용해서 만들어지는 State 객체가 변화할 수 있습니다.
그러니 변하지 않는 코드는 Widget 안에 선언하고, 동적으로 변하는 코드를 State 내부에 선언해야 합니다.
StatefulWidget이 인플레이트 될 때마다 프레임워크는 createState() 를 호출합니다.
퍼포먼스 이슈나 기타 세부사항은 지금은 다루지 않습니다.
Dart variable
Dart는 javascript와는 달리 정적 타이핑 언어이기 때문에 일반적으로 변수의 타입을 따집니다.
동적 타이핑 언어에서 썼던 것 처럼 변수를 사용하려면 dynamic 으로 변수형을 지정하면 됩니다. 이렇게 하면 런타임에 타입이 결정됩니다.
Dart function
그냥 평범한 C 스타일 함수 선언을 합니다. build() 함수를 보면 됩니다.
parameter가 2개 이상일 때는 {}로 감싸줘야 합니다.
int add({int n1, int n2}){ return n1 + n2; }
간단한 샘플 코드
화면을 누를 때마다 0<= <100 사이의 수를 랜덤하게 생성하는 StatefulWidget 입니다.