Flutter architecture

Project architecture (Clean Architecture Approach)

1. Why:

2. Presentation — Domain — Data.3. Presentation layer consist of

4. Domain layer (Business logic layer)

5. Data layer (Data access layer)

We build this class working separately and not following logics of . However, will still implement from , but the will follow each function, and the will follow the cluster of data defined on the server. For example: has defined 2 layers of Login and Register features, but these two features are related to the API User cluster on the server, so in the , there will only be one Repo which is user and that Repo will implement 2 layers Login and Register of the .

6. More insight of layers

DI pattern

is a great design pattern that allows us to eliminate rigid dependencies between elements and it makes the application more flexible, easy to expand scales and maintain. In the project we use Plugin to implement DI and we have also defined classes so you can easily implement in the .


Inject modules



The project has predefined Named routes RouteDefine + manifest

1. RouteDefine

2. manifest —


Development environment settings.

You can run the app using the commands

Build App

You can build the app using the commands

for Android

for IOS


Getting started

Get dependencies and generate necessary files.

We’ll handle the generation of required files for 🚀 your onboarding!

Json parsing / serialization

This project is implementing json_serializable. It use build_runner to generate files. If you make a change to these files, you need to re-run the generator using build_runner:

generator using build_runner and remove conflict file :


  • Auto indentation handled with git hook using Lefthook.
  • For mac users, run and you should be done. More details below.
  • This project use npm for Lefthook installation, to ease others getting it up running fast — run
  • After installation, run to finish up installation.
  • More info here.


Using this library to handle multi-languages. Follow this guide to understand and config languages files

Setup Step :

Initialize plugins (IntelliJ reference)

  1. Open Flutter intl in
  2. Click on
  1. To add / remove Locale, choose /
  2. Then it will promp which locale

Current available locale is en, en


Senior Mobile Developer