clean_template
Clean architecture template project for new flutter applications.
Implemented app logic
RestClient
- rest API client-server networking using dio package;DIContainer
- dependency injection container using get_it package;Service
- abstraction for implementing specific app logic; Implementations ofService
:AppRouter
- app navigation using flutter navigation withRoutes
enum. Supports nested navigator;ModalBottomSheetService
- service for showing modal bottom sheet;
Project structure:
- config
- core
- app
- services
- router
- data
- models
- storage
- domain
- models
- requests
- responses
- network
- repositories
- models
- presentation
- components
- screens
- styles
- utils
- extensions
Structure description
- config -
- core -
- app -
- services -
- router -
- data -
- models -
- storage -
- domain -
- models -
- requests -
- responses -
- network -
- repositories -
- models -
- presentation -
- components -
- screens -
- styles -
- utils -
- extensions -
Used dependencies
Necessary
- bloc - implementation of BLoC pattern in dart
- flutter_bloc - implementation of bloc for flutter, main app state manager
- get_it - service locator and dependency injection container for app business logic
- dio - a powerful http client for flutter applications, also has many other useful functions
- flutter_secure_storage -
- shared_preferences -
- json_annotation - required by json_serializable package, helps to generate
JsonSerializable
classes, also has many other useful annotation settings
Additional useful dependencies
- http - library for making http requests, has many useful functions and classes
- freezed_annotation - required when using freezed package, helps to generate
freezed
classes - easy_localization - very simple for implement localization library with support of json configs and localization keys generator
- permission_handler - helps to request any permissions from app users
Used dev dependencies
Necessary
- build_runner - required for packages that generates code, like json_serializable, freezed, easy_localiztion and etc.
- json_serializable - helps to create classes that can be encoded to json and decoded from json by generating code (requires json_annotation dependency and dev dependency to generate code)
Additional
- freezed (recommended) - very useful code generator that helps to save many work time and significantly reduces lines of code
TODOS
- fill project structure directories description
- add more dependency packages
- add UI dependencies bloc
- implement
DialogSerivce
- implement
OverlayService
- implement auto_route package