Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-17 00:00
관리 메뉴

nomad-programmer

[Flutter] StatefulWidget 클래스 사용 시점 본문

Programming/Flutter

[Flutter] StatefulWidget 클래스 사용 시점

scii 2020. 10. 18. 16:31

StatelessWidget 클래스에 TextFormField를 사용해도될까?

TextEditingController는 렌더링간에 유지되어야하는 클래스 인스턴스이다. 그러나 StatelessWidget 클래스에 정의하면 기본적으로 모든 업데이트 후 다시 만든다. 그러므로 TextFormField 클래스를 사용할 예정이면 StatefulWidget 클래스로 만들어야 한다.

Flutter 공식문서에서도 TextFormField 클래스를 생성할 때면 StatefulWidget으로 생성하라고 나와있다.

flutter.dev/docs/cookbook/forms/text-field-changes

 

Handle changes to a text field

How to detect changes to a text field.

flutter.dev

StatelessWidget은 정적인 화면. 즉 아무것도 변경되지 않는 소개 페이지나 사진, 그림 등 정적인 렌더링에 사용하는 클래스이다. 그래서 앱 종료 시 호출하는 dispose 클래스를 사용할 수 없다. 또한 rebuild 될 때 마다 상태(state)가 손실된다.

앱이 Rebuild 되어도 상태를 유지해야하거나 동적인 화면을 렌더링할 때에는 StatefulWidget 클래스를 사용하면 된다.

정리

  • Rebuild가 되어도 상태값을 유지하려면 StatefulWidget 클래스를 사용한다.
  • dispose() 메소드에 적고 싶은 코드가 있다는 것 자체가 StatefulWidget을 써야한다는 증거이다.
  • TextEditingController는 렌더링간에 유지되어야 하는 인스턴스이다. 그런 변수를 매번 다시 만들지 않게끔 상태(state)를 관리해주는 StatefulWidget을 사용해야 한다.
  • StatelessWidget은 Rebuild할 때 상태(state) 값이 손실된다.
Comments