개발자
GetX와 Provider, Riverpod , BLoC중 어느 라이브러리를 선호하시나요?? 최근 Flutter 공부를 시작했는데 모두를 한 번에 파악하긴 어려울거 같고 간단한 프로젝트 진행하면서 익혀보려 하는데 어느게 더 선호되는지 궁금합니다..
답변 4
인기 답변
저는 Rivderpod를 사용하고 있습니다. Provider의 개선된 버전이기도 하고, 프론트엔드 개발을 하다가 Flutter로 넘어오다보니 Redux, Recoil등과 비슷한 구조인 것 같아서 쉽게 적응할 수 있었어요. MVVM패턴을 적용해서 개발하기에 용이하고, 오늘자 기준으로 가장 최근 커밋이 3일전이라 관리도 잘 되고 있다고 생각합니다. BLoC은 사용해본적 없는데, 프로젝트 규모가 커지면 BLoC을 도입해야 한다는 의견을 가진 분들이 있더라구요. 하지만 저는 아직 Riverpod가 너무 불편해서 전환해야겠다는 경험은 하지 못했습니다. GetX를 사용하지 않는 이유는 - 5.x대 버전 출시예정이라는 글이 꽤 오래전에 작성됐는데 아직도 정식버전이 나오지 않고 있습니다. 여담이지만 관리하시는 분이 본업은 변호사라고 하시더라구요. maintain할 수 있는 환경이 잘 갖추어지지 않는 것 같습니다. - BuildContext를 사용하지 않고도 객체 참조가 가능하기 때문에 코드가 오염될(?) 가능성이 높다고 생각합니다. - 제 기억이 맞다면 GetxController의 변수는 어디서든 변경이 가능하기 때문에 (물론 widget에서 변수 변경하지 않도록 컨벤션을 정하면 되긴 하지만) MVVM패턴도 지키기 어려운 것 같아요. 라인에서 상태관리 패키지들을 비교한 블로그 글을 전달드립니다. 잘 설명되어있어서 상태관리 라이브러리를 선택하실 때 참고하시면 좋을 것 같습니다 https://engineering.linecorp.com/ko/blog/flutter-architecture-getx-bloc-provider
idelsoo
소프트웨어 엔지니어 • 2024년 02월 18일
Bloc과 Getx를 혼합해서 사용합니다.
Provider -> GetX -> Bloc 순으로 넘어왔습니다. 작은 프로젝트에선 provider도 괜찮습니다. 근데 컨트리뷰터가 Riverpod으로 넘어가서, Riverpod이 요즘은 더 낫습니다. GetX는 BuildContext에 대한 종속성이 아예 없다고 봐야해서, 정말 쉽게 쓸 수 있습니다. 전역 상태 관리처럼 쓸 수 있어요. 근데 자유도가 엄청 높아서 컨벤션을 잘 관리하지 않으면, 책임을 아무렇게나 넘나드는 코드가 작성되기 쉽습니다. Bloc은 BuildContext 트리에 대한 종속성이 있고, 제대로 된 파워를 내려면 DI와 라우팅에 대한 이해도도 높아야해서 확실히 어렵습니다. 대신 트리 구조와 BuildContext를 잘 활용하면, 코드 재활용성이 매우 높아지는 장점이 있습니다.
저희팀에서는 Provider -> Riverpod 으로 넘어왔습니다. 이유는 프로젝트가 복잡해지면서 전역상태관리가 많아지고, 실시간으로 상태 동기화를 효율적으로 처리하기 위함이였습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!