kyuyoungheo / flutter-study

0 stars 0 forks source link

StatelessWidget안에 StatefulWidget 있어도 상관없나? #12

Closed kyuyoungheo closed 4 months ago

minjunkim-dev commented 4 months ago

이것과 별개의 이야기긴 한데요. 저희 마이디 프로젝트의 MY 뷰가 현재 플러터로 구현이 되어있는데, 여기서 토글은 StatelessWidget으로 구현되어 있고, 토글들을 관리하는 부모 뷰는 StatefulWidget으로 구현되어 있습니다.

토글 자체가 켜고 키는 상태값을 가지고 있는데 왜 Stateless로 만들었을까라는 의문이 있었는데요. 토글 값이 항상 독립적이라면 Stateful이 맞겠지만, MY의 마케팅 관련 토글의 경우 야간수신에 동의하면 반드시 바로 위의 이벤트 혜택 정보 수신도 같이 동의가 되어야 합니다.

즉, 부모가 자식들의 State를 옵저빙하며 상황에 따라 관리를 해주어야 하는 상황입니다. 그래서 부모는 Stateful로 하여 상태값이 바뀜에 따라 자식 뷰들을 다시 그려주기 떄문에, 자식인 토글들은 Stateless여도 새로운 상태값으로 부모가 다시 그리기 때문에 상관이 없을 것 같아 그렇게 구현했다고 합니다.

na-young-kwon commented 4 months ago

자식의 상태를 부모가 옵저빙하고 그 상태값이 바뀌면 뷰를 다시 그리기 때문에 statefulwidget일 필요가 없다는 뜻이군요

상태를 가진다 =/= statefulWidget으로 구현한다 라고 할 수 있겠네요

*자식뷰가 직접 상태를 관리하지 않고 외부에서 상태를 전달받아 렌더링하는 역할만 한다면 StatelessWidget으로 구현