오늘 코드를 작성하던 중
이걸 함수형으로 적어야하나 또는 클래스형으로 적어야하나 고민이 되었다.
그래서 찾아봤다.
출처
https://velog.io/@jaybon/%ED%94%8C%EB%9F%AC%ED%84%B0-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9C%84%EC%A0%AF%EA%B3%BC-%ED%95%A8%EC%88%98%ED%98%95%EC%9C%84%EC%A0%AF
함수형 위젯 vs 클래스 위젯 차이점
Q : 플러터 클래스위젯과 함수형위젯 의 차이를 알려줘
플러터(Flutter)에서 클래스 위젯과 함수형 위젯은 두 가지 주요한 위젯 유형입니다. 각각의 차이점은 아래와 같습니다:
- 클래스 위젯 (Stateful/Stateless 위젯):
- 클래스 위젯은 Dart 프로그래밍 언어의 클래스를 사용하여 작성됩니다.
- 클래스 위젯은 상태 관리가 필요한 경우 Stateful 위젯으로 작성됩니다. Stateful 위젯은 StatefulWidget 클래스를 상속받아 구현됩니다.
- 클래스 위젯은 상태 관리가 필요하지 않은 경우 Stateless 위젯으로 작성됩니다. Stateless 위젯은 StatelessWidget 클래스를 상속받아 구현됩니다.
- 클래스 위젯은 상태 변경이 필요할 때
setState()
함수를 사용하여 위젯을 다시 빌드할 수 있습니다.
- 함수형 위젯 (Functional 위젯):
- 함수형 위젯은 Dart 프로그래밍 언어의 함수를 사용하여 작성됩니다.
- 함수형 위젯은 상태 관리가 가능하지 않습니다. 따라서 주로 데이터 전달과 간단한 화면 구성에 사용됩니다.
- 함수형 위젯은 실행 시점에 한 번만 렌더링되므로, 상태 변경이 필요한 경우에는 클래스 위젯을 사용하는 것이 좋습니다.
- Flutter 1.17 이후,
hooks_riverpod
와 같은 패키지를 사용하면 상태 관리 기능을 함수형 위젯에 적용할 수 있습니다.
결국, 클래스 위젯과 함수형 위젯의 선택은 개발자의 요구 사항, 선호하는 방식, 상태 관리 기능의 필요 여부에 따라 결정됩니다.
정리
함수형 위젯
- 빌드가 중간 중간 없음
그만큼 효율적이지만 캡슐화가 X
그리고 rebuild 가 안됨
클래스형 위젯
- 빌드가 중간 중간 있기 때문에 필요한부분만 rebuild 가 가능하고 캡슐화또한 가능
하지만 rebuild 불가