FLUTTER ECOSYSTEM

aleksanderwozniak/deer

BLoC 패턴을 사용하여 구현한 미니멀리스트 플러터 할 일 앱

사슴 프로젝트 이미지
Stars
459
Forks
103
최근 푸시(UTC)
2020. 11. 11.
프로젝트 상태
활성
Aleksander Woźniak GitHub avatar
GITHUB User

Aleksander Woźniak ↗

Flutter and Kotlin enthusiast

언어DartKotlinObjective-C

기술 주제

관련 패키지 및 예제

사용 중인 의존성

의존성 목록 19 개

앱 카테고리

순위

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

README 펼치기 / 접기

Deer

https://github.com/aleksanderwozniak/deer/blob/master/assets/images/4.0x/deer_logo.png

Minimalist Todo Planner app built around the idea of efficiency and clean aesthetic.

Showcase

https://github.com/aleksanderwozniak/deer/blob/assets/deer.gif https://github.com/aleksanderwozniak/deer/blob/assets/indi_list.png https://github.com/aleksanderwozniak/deer/blob/assets/gold_shp_edt.png https://github.com/aleksanderwozniak/deer/blob/assets/mint_wrk_det.png

Development

Deer uses BLoC (Business Logic Component) pattern to manage app state. If you want to use Streams in your Flutter project, then I think this is the way to go. BLoC plays exceptionally well with Flutter's reactive nature, especially since Flutter has built-in StreamBuilder widget.

Each screen is splitted into 4 files:

  • actions
  • bloc
  • screen (UI itself)
  • state

Instead of calling setState() in screen file, an action is pushed to bloc's input Stream<Action>. Then, bloc resolves that action and updates the output Stream<State>. Every state update is listened to inside screen with StreamBuilder, which updates the UI when needed. This way we achieve clear separation of concerns.

Usually with BLoC, Sink is used for input Stream, and BehaviorSubject for output Stream.

Check those resources for more details on the pattern:

  • https://youtu.be/PLHln7wHgPE
  • https://youtu.be/RS36gBEp8OI
Using built_value
flutter packages pub run build_runner build --delete-conflicting-outputs