주의: 개인 공부용입니다. 독자에게 도움이 안 될 확률이 매우 높습니다. 저에게만 이해하기 좋은 스타일이니까 Bloc을 진지하게 이해하려는 분은 안 읽는 게 나을 것 같습니다.
나는 Bloc(이하 bloc)을 써 본 적이 없다.
Riverpod과 GetX 경험만 있다.
아래 내용은 내가 bloc을 간단히 이해하기 위해 정리한 내용이다.
혹시 나중에 바로 사용해야 할 수도 있으니까.
1) bloc이란?
bloc(Business Logic Component)는 플러터 애플리케이션에서 상태 관리 및 비즈니스 로직을 분리하고 관리하기 위한 디자인 패턴입니다. bloc 패턴은 플러터의 애플리케이션 아키텍처를 개선하고 코드의 유지 보수성과 재사용성을 향상시키는데 도움이 됩니다.
bloc 패턴의 핵심 아이디어는 다음과 같습니다:
상태 분리: 애플리케이션의 상태와 UI를 분리하여 관리합니다. 이를 통해 UI 렌더링 로직과 비즈니스 로직을 분리하여 코드를 관리하기 용이하게 합니다.
이벤트 처리: 사용자 입력 또는 데이터 변경과 같은 이벤트를 처리하는데 중심을 둡니다. 이벤트는 bloc로 전달되어 상태 변화를 일으키며, 이에 따라 UI가 업데이트됩니다.
상태 스트림: bloc는 Stream을 사용하여 애플리케이션의 상태를 나타냅니다. 상태 스트림을 통해 UI는 bloc의 상태를 구독하고, 상태가 업데이트될 때마다 UI가 갱신됩니다.
단일 책임 원칙: 각 bloc는 특정 부분의 비즈니스 로직과 상태를 관리합니다. 이를 통해 애플리케이션을 더 작은 단위로 분할하고, 모듈화하여 관리할 수 있습니다.
bloc 패턴은 보통 아래와 같은 요소로 구성됩니다:
bloc: 비즈니스 로직과 상태를 관리하는 클래스입니다. bloc는 이벤트를 입력받아 상태를 변화시키며, UI에 상태를 제공하는 스트림을 제공합니다.
이벤트: 사용자 입력 또는 데이터 변경과 같은 액션을 나타내는 클래스입니다. bloc로 전달되어 상태 변경을 유발합니다.
상태: 애플리케이션의 상태를 나타내는 클래스입니다. bloc는 상태를 관리하고 업데이트하여 UI에 제공합니다.
UI: 사용자 인터페이스를 구성하는 위젯입니다. UI는 bloc의 상태를 구독하여 상태에 따라 UI를 업데이트합니다.
bloc 패턴은 효율적인 상태 관리와 UI 업데이트를 제공하여 큰 규모의 플러터 애플리케이션을 개발하는 데 도움을 줍니다. flutter_bloc 패키지나 bloc 패키지와 같은 라이브러리를 사용하면 bloc 패턴을 쉽게 구현하고 관리할 수 있습니다.
2) 외부 패키지를 사용해야만 bloc을 사용할 수 있어?
아니요, 외부 패키지를 사용하지 않고도 bloc 패턴을 구현할 수 있습니다. 하지만 외부 패키지를 사용하면 bloc 패턴을 더 효율적으로 관리하고 코드를 간소화할 수 있습니다.
일반적으로 외부 패키지를 사용하면 다음과 같은 이점이 있습니다:
편의성: 외부 패키지는 bloc 패턴의 구현을 단순화하고 편의성을 제공합니다. 예를 들어, flutter_bloc 패키지는 bloc과 Cubit을 더 쉽게 구현하고 관리할 수 있도록 도와줍니다.
커뮤니티 지원: 많은 개발자가 사용하는 외부 패키지는 활발한 커뮤니티와 문서를 가지고 있을 가능성이 높습니다. 이를 통해 문제 해결 및 정보 공유가 용이해집니다.
기능 확장: 외부 패키지는 추가적인 기능과 도구를 제공할 수 있습니다. 예를 들어, 상태 변화를 추적하고 디버깅하는 도구를 제공하는 경우도 있습니다.
코드 품질: 외부 패키지는 다양한 사용 사례를 고려하여 테스트되고 최적화될 가능성이 높습니다. 따라서 코드 품질과 성능을 향상시킬 수 있습니다.
시간 절약: 외부 패키지를 사용하면 bloc 구현에 들어가는 시간을 절약할 수 있습니다. 이는 프로젝트의 개발 속도를 높일 수 있습니다.
결국 외부 패키지를 사용할지 여부는 프로젝트의 요구사항과 개발자의 선호도에 따라 다를 수 있습니다. 외부 패키지를 사용하지 않더라도 순수하게 Dart와 플러터를 활용하여 bloc 패턴을 구현할 수 있습니다.
3) 플러터에서 bloc을 구현하기 위해 참고해야 하는 공식 홈페이지나 문서가 있어?
네, 플러터의 bloc 패턴을 구현하기 위해 flutter_bloc 패키지와 관련된 공식 문서와 예제가 제공됩니다. 아래의 링크를 통해 flutter_bloc 패키지의 공식 문서와 예제를 확인할 수 있습니다:
flutter_bloc 패키지 문서: flutter_bloc 패키지의 공식 문서에서 bloc 패턴의 구현 방법과 주요 기능에 대한 자세한 내용을 찾을 수 있습니다.
문서 링크: flutter_bloc 패키지 문서
bloc 패턴 예제: flutter_bloc 패키지의 예제들은 bloc 패턴을 구현하는 방법을 실제 코드로 보여주고 있습니다. 예제를 통해 bloc의 기본적인 사용법부터 고급 기능까지 학습할 수 있습니다.
예제 링크: flutter_bloc 패키지 예제
Reso Coder's BloC Tutorial: 플러터 개발자 커뮤니티에서 잘 알려진 Reso Coder가 작성한 bloc 패턴 튜토리얼은 bloc을 이해하고 구현하는데 큰 도움이 됩니다.
튜토리얼 링크: Reso Coder's BloC Tutorial
위의 자료들은 플러터에서 bloc 패턴을 학습하고 구현하는 데 도움이 될 것입니다. 공식 문서와 예제를 통해 실전에서의 활용 방법을 익히시기를 권장합니다.
나는 내일 기술 면접이 있어 이 이상 깊게 파지 않겠지만
내가 만일 bloc에 대해 아무 것도 모르는데
당장 실무에 사용을 해야 해서 학습이 급한 상황이라면,
1) 공식 홈페이지와 공식 문서를 빠르게 훑고
https://bloclibrary.dev/#/
https://pub.dev/packages/flutter_bloc
2) tutorial을 한 번 하고
https://resocoder.com/2020/08/04/flutter-bloc-cubit-tutorial/
3) bloc 사용 예제를 많이 보겠다.
youtube, github 등에 많음
지금 상황에서는, 봐야 하는 자료가 너무 많아서
다음 포스트에서 2번을 다루겠다.
(다음 포스트로...)