A Flutter project aimed at learning app development across multiple platforms using a unified codebase.
https://flutter-end-to-end.web.app
- Theme
- Routing - Declarative Routing using GoRouter
- Localization - Bidirectional Support
- Offline support - using the Sqflite plugin
- Bloc Architecture - by applying principles of Clean Architecture
- Integrated REST Api's - using Firebase Realtime Database.
- Deep Linking - Using flutter deep-linking
- Remote Push Notifications - using Firebase
- Flavor Support - Android, IOS & macOS 10.Automate Tests - Unit, Widget and Integration
- CI/CD Pipeline integration - for Android, ios, Web and MacOs.
- Android - Install Android App
- IOS - Install IOS
- Web - Open Web App
- MacOS - Install IOS
- In this application Material 3 themeing was implemented, in this appliacation can find different type of material components.
- Implemented light and dark theme modes, these modes changes based on the system configurations as well.
- For more information follow below links
Medium post: https://medium.com/@krishnajiyedlapalli60/creating-custom-theme-in-flutter-with-material-3-70e524a126d0
Web Reference: https://flutter-end-to-end.web.app/#/home/localization
- This whole application navigations was implemented using GoRouter package.
- It supports all the platforms which are supported by Flutter.
- This application supports nested navigation.
- Implemented Parent with mutiple children navigation but having some issue when tapping on device backbutton will sort out it soon.
Web Reference: https://flutter-end-to-end.web.app/#/home/route
- For brefiely explaining about bloc we created a module called Schools, using this module we can create a school,student and more about school, additionally added a delete option as well.
- The entire process of creating, editing, and deleting entities is implemented using Bloc exclusively.
- It will explain how to segregate the folders and how flow will be through them.
- We are utilizing Firebase Realtime Database for implementing CRUD operations
Medium post: https://medium.com/@krishnajiyedlapalli60/clean-architecture-using-flutter-bloc-43463e9110db
Web Reference: https://flutter-end-to-end.web.app/#/home/schools
- School module which is developed by using flutter Bloc can stores the data in the local DB this was implemented by using SQLite data base.
- It has three different type modes based on the selected mode data will be stored.
- Offline Mode: Stores the data in Local db only when there was no internet. Once internet is back data will Sync automatically with server and delete the local data
- Online & Offline Mode: Irrespective of Internet data will be stored in local db and data will be deleted based on the configured date
- Dumping Offline Data: Data will be dumped into the local DB at the time login or Module loading. Later it is used making some operations
- Once internet is available it will automatically upload the data to server using Connectivity plus package.
- Currently Offline supported platforms iOS, Android and macOS .
-
This applications supports deep linking purely implemented by using flutter officials docs https://docs.flutter.dev/ui/navigation/deep-linking
-
Currently Deep linking supported platforms iOS, Android and macOS.
-
Added asset link for Android and site association for iOS
Android: https://flutter-end-to-end.web.app/.well-known/assetslinks.json
iOS: https://flutter-end-to-end.web.app/.well-known/apple-app-site-association
Reference Link: https://docs.flutter.dev/ui/navigation/deep-linking
Web Reference: https://flutter-end-to-end.web.app/#/home/deep-linking
- Push Notifications are integrated by using Firebase.
- Currently Push Notifcations supported platforms Android,iOS,macOS,and Web.
Reference Link: https://firebase.google.com/docs/cloud-messaging/flutter/client
Web Reference: https://flutter-end-to-end.web.app/#/home/push-notifications/remote-notifications
- Local notifications are integrated by using flutter_local_notifications.
- Currently Local Push Notifcations supported platforms Android,iOS,macOS,and Linux.
Reference Link: https://pub.dev/packages/flutter_local_notifications#-supported-platforms
Web Reference: https://flutter-end-to-end.web.app/#/home/push-notifications/local-notifications
- Maintaining different environment.
- Buidling application on same code base for different customers by changning logos and App name.
- Changning Configurations like colors,acess,etc.
- Flutter
- Dart
Don't be confused they are flavor name only, Based on the flavor launcher icons and App name is changed
flutter run --flavor flutter
flutter run --flavor dart
flutter run
Integration Tests on Mobile
flutter test integration_test
Screen.Recording.2024-06-20.at.09.44.48.MOV
Integration Tests on Web
flutter drive \ --driver=test_driver/integration_test.dart \ --target=integration_test/app_test.dart \ -d chrome
Screen.Recording.2024-06-24.at.08.26.22-2.mp4
Unit Test and Widget Testing