[Flutter] .value와 .create의 차이 (Provider)

도톨이·2025년 5월 14일
0

앱 개발-flutter

목록 보기
34/34

참고 : https://github.com/rrousselGit/provider/blob/master/resources/translations/ko-KR/README.md

Provider 사용해서 뷰모델을 주입할 때, 처음에 .value() 을 사용하고자 했는데 .create() 를 사용하는 것이 더 좋다고 GPT가 그래서 조사를 해보았다.

위의 링크룰 보면, provider의 공식 문서와 저자인 Rémi Rousselet가 .value()는 특별한 상황이 아닌 한 지양하고, 대부분의 경우 .create() 방식으로 ViewModel을 등록할 것을 권장하는 것을 알 수 있다.

.create(...) 는 Provider가 객체를 직접 생성하며, 생명 주기도 직접 관리한다. 그래서 위젯 트리에서 사라지면 자동으로 dispose() 가 호출되어 메모리 누수를 방지할 수 있따.

반면, .value 는 이미 생성된 객체를 넘기는 경우에 사용한다. 따라서 이 객체는 Provider가 만든 게 아니므로 dispose()를 자동 호출하지 않는다. 이는 리스트 빌더, 애니메이션, 조건부 위젯 등에서 위험한 상태 꼬임을 발생할 수도 있다.

.value 는 ViewModel이 앱 전체에서 하나만 존재해야 할 때나 ListView.builder 등 반복 위젯에서 상태를 전달할 때 등의 제한된 상황에서만 사용하는 것이 좋다고 한다.

profile
Kotlin, Flutter, AI | Computer Science

0개의 댓글

Powered by GraphCDN, the GraphQL CDN