BLoC 패턴이란? 이벤트와 상태로 UI와 로직을 나누는 법
Event → BLoC → State 단방향 흐름
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 각각 필요)
- ✗ 소규모 앱에는 과도한 구조
사용 사례
대규모 팀 프로젝트에서 역할 분리
복잡한 폼 검증 로직 분리