About

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 각각 필요)
  • ✗ 소규모 앱에는 과도한 구조

사용 사례

대규모 팀 프로젝트에서 역할 분리 복잡한 폼 검증 로직 분리

참고 자료

← Provider vs Riverpod — Flutter 상태 관리 고르기 Flutter 화면 이동 기초 — push/pop과 Named Route →