코딩/개념
프로바이더 보다 블럭을 쓰는 이유
흑백 개발자
2025. 4. 12. 15:11
728x90
1.비즈니스 로직과 UI를 엄격하게 분리한다 .
프로바이더 쓸때는 닉네임 변화 할때 닉네임 글자 변경하면서 변화하는 로직도 던져주니
가끔 순서때문에 이름에 널값뜨거나 그랬는데, (타이밍 이슈)
블럭 쓰면 ui 변화 따로 시키고 로직도 따로 변화 시켜주니 널 값 뜰 확률이 줄어든다 (순차적으로 처리)
그리고 어디가 문제인지 정확히 짚어서 수정할 수 있다.
2. 단방향 통신
프로바이더 쓸때는 닉네임 변화 시킬때 ChangeNotifier에서 직접 상태 변경 메서드를 호출해서
서로 호출하다 무한 루프가 걸릴 때가 있었다.
(ChangeNotifier를 통해 어디서든 상태를 변경할 수 있어 순환 의존성이 발생할 리스크가 있다.)
하지만 블럭 쓸때는 UI에서 이벤트 발생 → BLoC이 이벤트 수신 → BLoC이 상태 변경 → UI에 새 상태 전달 → UI 업데이트
이런식으로 한 방향으로만 가기 때문에
서로 오고가다 충돌하지 않는다.
ㅡㅡㅡㅡㅡㅡㅡ
BLoC을 사용하는 가장 중요한 이유 두 가지는:
- 명확한 관심사 분리: BLoC은 비즈니스 로직과 UI를 엄격하게 분리하여 코드 구조가 더 깔끔하고 유지보수가 용이합니다.
- 예측 가능한 단방향 데이터 흐름: 이벤트 기반 아키텍처로 상태 변화가 예측 가능하며 디버깅이 쉽습니다.
단방향 데이터 흐름이란?
단방향 데이터 흐름은 데이터가 한 방향으로만 흐르는 아키텍처 패턴입니다:
- BLoC에서의 데이터 흐름:
- UI에서 이벤트 발생 → BLoC이 이벤트 수신 → BLoC이 상태 변경 → UI에 새 상태 전달 → UI 업데이트
- 데이터는 항상 이 순서로만 흐르며, 역방향으로 흐르지 않음
- Provider와의 차이:
- Provider가 반드시 양방향이라기보다는, BLoC이 더 엄격한 단방향 흐름을 강제함
- Provider는 ChangeNotifier에서 직접 상태 변경 메서드를 호출할 수 있어 흐름이 덜 명시적
- 장점:
- 상태 변화의 출처를 쉽게 추적 가능
- 디버깅이 용이함
- 코드 예측 가능성 향상
728x90