Tutorials for this project

Flutter Bloc - Clean Architecture

Flutter project using clean architecture and bloc pattern.

Architecture

Features

  1. Architecture: Clean Architecture

  2. State management: flutter_bloc

  3. Navigation: auto_route

  4. DI: get_it, injectable

  5. REST API: dio

  6. GraphQL: artemis, graphql_flutter

  7. Database: objectbox

  8. Shared Preferences: encrypted_shared_preferences

  9. Data class: freezed

  10. Lint: dart_code_metrics, flutter_lints

  11. CI/CD: Github Actions, Bitbucket Pipelines

  12. Unit Test: mocktail, bloc_test

  13. Paging: infinite_scroll_pagination

  14. Utils: rxdart, dartx, async

  15. Assets generator: flutter_gen_runner, flutter_launcher_icons, flutter_native_splash

  16. Shimmer loading effect

Shimmer-loading-effect.mp4
  1. Load more
Load-more.mp4
  1. Retry when error
Retry-when-error.mp4
  1. Nested navigation
Nested-Navigation.mp4
  1. Dark mode
Dark-Mode.mp4
  1. Change App Language
Change-App-Language.mp4

Getting Started

Requirements

  • Dart: 2.18.5
  • Flutter SDK: 3.7.1
  • Melos: 2.8.0
  • CocoaPods: 1.11.2

Install

  • WARN: If you already installed melos and lefthook, you could omit this step.

  • Install melos:

    • Run dart pub global activate melos 2.8.0
  • Install lefthook (optional):

    • Run gem install lefthook
  • Export paths:

    • Add to .zshrc or .bashrc file
export PATH="$PATH:<path to flutter>/flutter/bin"
export PATH="$PATH:<path to flutter>/flutter/bin/cache/dart-sdk/bin"
export PATH="$PATH:~/.pub-cache/bin"
export PATH="$PATH:~/.gem/gems/lefthook-0.7.7/bin"
- Save file `.zshrc`
- Run `source ~/.zshrc`

Config and run app

  • cd to root folder of project
  • Run make gen_env
  • Run make sync
  • Run lefthook install (optional)
  • Run & Enjoy!

Upgrade Flutter

Upgrade Melos

License

MIT