BloC 그리고 MVI

UiLayer 는 BloC 패키지를 사용하여 구성이 되어 있습니다. BloC 상태 관리 패키지 중 하나로 blocProvider 를 통해 하위 위젯에게 bloc 객체를 전달하여 ui 의 상태를 관리하도록 하는 패키지 입니다.

Bloc State Management Library

BloC 의 구현은 Stream 의 개념을 사용하고 있어 일반적으로 RxJava 나 Kotlin 의 Flow 를 사용해 보았다면 어렵지 않게 패키지를 사용할 수 있습니다.

해당 프로젝트에서는 MVI 패턴을 차용하였습니다. 또한 BloC 를 선택한 이유 또한 MVI 와 연관이 있습니다.

Model-View-Intent

MVI 아키텍쳐는 VIew 화면이 Intent 에 있는 정보를 가지고 갱신이 됩니다. 그리고 Model 에서 해당 Intent 를 제공하는 방식입니다.

MVI — a new member of the MV* band

즉, 프로젝트가 의 vIew 는 flutter widget model 은 bloc 그리고 intent 는 bloc 이 ui 에 전달하는 Stream data 가 되는 것입니다.

또한 MVI 에서의 Intent 는 immutable 해야 하기에, BloC 이 전달하는 data 또한 immutable 해야합니다. 그래서 저는 freezed 패키지를 사용하여 bloc 이 전달하는 데이터를 immutable 하게 만들었습니다.

Project Ui package

Untitled

Untitled

Ui 는 Scenario 의 하위 패키지로 구성되어 있습니다. 모든 Scenario 는 다음으로 구성되어 있습니다.