위젯 vs 헬퍼 메서드 | Flutter 디코딩 하기
코드를 작성하다 보면 위젯을 모듈화하기 위한 방법이 몇가지 있다.
- 헬퍼 메서드
Widget someWidget(){
return Container();
}
- 위젯 클래스
class SomeWidget extends StatelessWiget {
...
}
시간이 없는 사람들을 위한 2줄 요약
- Widget Class를 써라
- 최대한 Const 생성자를 써라
아쉬우면 아래를 좀 더 보자
정리 내용
1. 헬퍼 메서드
- 변수 전달이 쉬움
- 직관적이지 않음
- setState는 전체 래핑 위젯을 재생성함
- 하지만 전체 UI 섹션을 리빌드 하는것은 트리를 깊어지게(deeper tree : element tree, render object tree, 트리에서 많은 작업을 하게 되므로 결과적으로 더 느리게 한다는 뜻) 만들고 CPU time 을 낭비한다.
- 만약 아이콘 애니메이션이라도 있다면 초당 60번 UI를 다시그리는 불필요한 작업을 하게 된다.
2. 새로운 위젯 클래스 만들기
- const 생성자가 최고의 성능
- 위젯 클래스는 최상위 위젯으로 앱을 느리게 만들지 않음.
- 또한 내부에서 buildContext를 사용하는 경우 잘못된 buildContext 사용하는 버그를 사전에 차단할 수 있다.
3. 그 외 내용들
- It never really was free.
- Classes have a better default behavior. The only benefit of methods is having to write a tiniy bit less code. There's no functional benefit.
공짜 점심은 없다. (헬퍼 메서드가 코드는 적더라도 성능은 아니다.)
클래스는 더 나은 기본 동작을 가진다. Methods는 조금 더 적은 코드를 가지는 거 외에 장점이 없다.