프로젝트 기본 구성 - BLOC

<aside> 💡 Flutter에는 다양한 상태관리 툴이 존재한다. 앱에서 다루는 모든 데이터를 State로서 상태관리 툴안에서 관리할 수 있다. 이번 해당 프로젝트에서는 BLOC을 사용하여 상태관리를 해보았다.

</aside>

프로젝트 내에 있는 Bloc을 예를 들자면,

Todo 라는 카테고리에서 사용하는 Bloc폴더 들이다.

전체 리스트, 검색된 State, 활성화된 State,

필터링되어진 State 들로 다르게 Bloc을 구성하였다.

Bloc은 기본 적으로 3개의 파일을 다룬다.

State

State파일에서는 기본적으로 State로서 관리할 클래스를 정의한다.

해당 구조는 Bloc 공식문서에 있는 구성은 아니지만 유튜브 및 강사 HeavyFran 의 구조를 사용했다.

기본적은 Class 설정이며, Equatable을 이용하여 객체의 비교 및 재생산을 도모했다.

Event

Event 파일에서는 State 들의 변화를 요청할 Event들을 설정한다.

예를 들어 Todo를 관리하는 State에 추가하기 위해서 addTodoEvent 클래스를 만들었다.

모든 Event들은 최상위 abstract class를 상속받아서 작성해야 Bloc에 등록 할 수 있다.

Bloc

가장 중요한 Bloc 파일에서는 Bloc<..Event,..State> 를 상속받아 구현한다.

구현체에서는 상태의 초기값을 세팅해야하며, Event 파일에서 만든 각각의 Event별로 로직을 작성해주어야한다.

state를 변경하는 code로는 각 로직의 마지막 부분인 이 부분이다.

Untitled

Untitled

Untitled

Untitled

Untitled

eemit(state.copyWith(todos: initTodos));

해당 코드를 통해 state가 변경되고, 해당 state를 참조하고 있는 모든 부분에 noti 를 보낸다.