🧩
BLoC 패턴
Business Logic Component로 관심사 분리하기
BLoC(Business Logic Component)은 Google이 제안한 Flutter 아키텍처 패턴입니다.
UI에서 Event를 발생시키면 BLoC가 비즈니스 로직을 처리하고 새로운 State를 emit합니다. UI는 State만 구독하여 화면을 갱신합니다.
flutter_bloc 패키지가 가장 널리 사용되며, Cubit(간단 버전)과 Bloc(이벤트 기반) 두 가지 방식을 제공합니다.
구현 순서
1
Cubit 시작: State 정의 → Cubit 클래스 작성 → BlocBuilder로 UI 연결
2
Bloc 전환: Event 클래스 정의 → on<Event>() 핸들러 작성
3
BlocProvider로 의존성 주입, MultiBlocProvider로 복수 Bloc 제공
4
bloc_test 패키지로 비즈니스 로직 단위 테스트
장점
- ✓ 비즈니스 로직 100% 단위 테스트 가능
- ✓ 이벤트 로그로 디버깅이 용이
단점
- ✗ 보일러플레이트 코드가 많음 (Event, State, Bloc 각각 필요)
- ✗ 소규모 앱에는 과도한 구조
사용 사례
대규모 팀 프로젝트에서 역할 분리
복잡한 폼 검증 로직 분리