This app has Auth Functions like Login, Register, and Show pagination data.
Authentication uses LazyAuth, while the paginated Dashboard user list uses DummyJSON.
This app also implementing Flutter Clean Architecture with TDD.
maestro-recording.mp4
| Technology | Recommended Version | Installation Guide |
|---|---|---|
| Flutter | v3.24.x | Flutter Official Docs |
| Dart | v3.5.x | Installed automatically with Flutter |
- Clone this project
flutter pub get - Run to generate localization files
flutter gen-l10n- Run to generate freezes files
flutter pub run build_runner build --delete-conflicting-outputs- Run for staging or
flutter run --flavor stg -t lib/main.dart --dart-define-from-file .env.stg.json - Run for production
flutter run --flavor prd -t lib/main.dart --dart-define-from-file .env.prd.json - Test Coverage, we ignore some folders and files which is not necessary to test coverage because it are generated file
- Note: on macOS, you need to have lcov installed on your system (
brew install lcov) to use this:
flutter test -j8 --coverage;lcov --remove coverage/lcov.info 'lib/core/localization/generated/' 'lib/core/resources/*' 'lib/utils/services/firebase/*' '**/*.g.dart' -o coverage/new_lcov.info ;genhtml coverage/new_lcov.info -o coverage/html- To generate a launcher icon based on Flavor
dart run flutter_launcher_icons - To generate native splash screen
dart run flutter_native_splash:create --flavors stg,prd- To generate mock class
dart pub run build_runner build- BLoC State Management
- Clean Architecture with TDD
- Unit Test
- Widget Test
- BLoC test
- Theme Configuration:
System, Light, Dark - Multi-Language:
English, Bahasa - Login, Register Example
- Pagination Example
- Autofill Username and Password
- Integration Test
- Implement multi-flavor
- Auto routing based on login status
- Implement Go Router
- Login with Biometric / FaceID
- Install Maestro on your machine Maestro
- Run this command to run the test
maestro test maestro-stg/main.yaml #or maestro test maestro-prd/main.yaml
Architecture Proposal by Resocoder
- Flutter native splashscreen: The brand image in Android > 12 the frame size is 5:2, if the width is 500px, the height should be 500/2,5 = 200px
