이번에는 플러터에서 Stateful, Stateless의 차이점에 대해 알아보려고 한다.
이 두개의 개념은 플러터에서 상당히 중요한 위치를 차지하고 있고
이것을 모르고는 플러터 개발을 원활히 진행할 수 없다.
하지만 복잡하지는 않다.
Stateful
이것은 뜻 그대로 해석하면 '상태가 있는'을 의미하며,
의미 그대로 상태를 가질 수 있는 위젯을 사용하기 위해 사용한다.
예를 들면, CheckBox, Slider 등의 위젯이 있다.
CheckBox를 예로 들면 체크, 체크안함 이 두가지 상태를 갖고 있으며 사용자의
액션에 따라 상태가 변하게 된다. 즉, 이러한 상태를 갖는 위젯을 사용할 때는
Stateful을 사용해야 한다.
Stateless
위 Stateful과 반대로 '상태가 없는'을 의미하며,
사용자의 동작과 상호작용이 필요없는 위젯을 사용할 때 사용한다.
Container, Row, Column, Icon, Text 등이 있습니다.
이 위젯들은 사용자와 상호작용을 하지 않는 위젯들입니다.
CheckBox 같은 위젯과 달리 Container를 예로 들면
해당 위젯을 터치해서 무언가 반응을 해야할 필요가 없기 때문이죠.
여기서 어떤 분은 이런 의문을 품을 수도 있을 것 같습니다.
Text 내의 글자를 변경하게 된다면 그것은 Stateful에 해당되는 것이 아니냐?
Text 내의 글자를 변경하는 것은 사용자와 상호 작용을 하는 것이 아니므로
Stateful에 해당하지 않습니다. CheckBox와 Slider, Radio 등의 위젯처럼
사용자가 터치 등의 동작이 있을 때 반응해야 하는 위젯만이 Stateful 위젯에 해당됩니다.
왜 이렇게 나누어놓았는가?
우선 Stateful과 Stateless의 LifeCycle이 다릅니다.
당연히 상호작용이 필요없는 Stateless가 LifeCycle이 더 빠르게 동작하므로,
반응에 대한 비용을 절약할 수 있습니다.(Stateless가 속도가 빠름을 의미)
Stateful과 같이 상호작용이 필요한 부분은 사용자와 상호작용시마다
그 상태를 새로 업데이트해주어야 하기 때문에 LifeCycle 시간이 더 걸리게 됩니다.
즉, 더 효율적인 개발을 위해 위와 같이 나누어진 것이라고 보시면 되겠습니다.
'프로그래밍 > Flutter(플러터)' 카테고리의 다른 글
Flutter(플러터)에서 SVG(벡터이미지) 표시하기 (4) | 2020.04.09 |
---|---|
firebase_admob과 image_picker 패키지 충돌 해결 방법 (0) | 2020.03.24 |
More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro' (0) | 2020.02.23 |
Flutter(플러터) 설치하기 (Android Studio) (0) | 2019.09.21 |
Flutter(플러터)에서 앱 아이콘 변경하기 (0) | 2019.08.30 |