The template of a Flutter project.
This project is the initial template for the Flutter application with authentication example, geolocation and upload of open weather information using the REST API It is based on clean architecture and uses modular extensible structure to implemting any features. For example implemented Login Page by using DummyJson.com API and Demo Page with geo localisation, openweather API and examples of the custom warning page This is project has example test covers for the data model, network and local data storage services (TDD).
- firebase_core
- firebase_storage
- cloud_firestore
- firebase_auth
- firebase_crashlytics
- firebase_dynamic_links deprecated
- firebase_messaging
- HTTP networking package: dio
- Annotate Dart objects in order to Serialize/Deserialize them to/from JSON: dart_json_mapper
- Geolocation plugin: geolocator
- NOSQL Database: ObjectBox
- A declarative app router: go_router
- And much other:
- equatable;
- freezed, freezed_annotation;
- dartz;
- package_info_plus;
- shared_preferences;
- path_provider, path;
More detailed information for these plugins could be found on the pub.dev
A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.
This project support managing and setting a flavor envirounment. Command line Flutter Flavor for run and/or build
Run:
flutter run -t lib/main_production.dart
flutter run -t lib/main_stage.dart
flutter run -t lib/main.dart
Build APK:
flutter build apk -t lib/main_production.dart
flutter build apk -t lib/main_stage.dart
flutter build apk -t lib/main.dart
Run Flavor configuration from Android Studio:
In this project used the dart_json_mapper plugin for serialization the data entities from/to Java.
Also this project included ObjectBox as local data storage service
Before first build/run and after any changes a data models, run this command in terminal on the project folder:
dart run build_runner build --delete-conflicting-outputs
Or to re-run code generation each time you are making changes
dart run build_runner watch --delete-conflicting-outputs
