Minimalist Flutter Todo App, built using BLoC pattern
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
android Prepare for version 1.0.2 Dec 20, 2018
assets/images Update assets Dec 6, 2018
ios Rename App Dec 5, 2018
lib Add Notification to quick TodoAdder widget Jan 2, 2019
.gitignore Prepare for Release 1.0.0 Dec 7, 2018
.metadata Setup project Oct 25, 2018
LICENSE Create LICENSE Dec 7, 2018 Update Dec 19, 2018
pubspec.yaml Prepare for version 1.0.3 Jan 2, 2019


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


Get it on Google Play


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:

Using built_value

flutter packages pub run build_runner build --delete-conflicting-outputs