This is App with Auth Function like Login and Register. All API using reqres.in.
This app also implementing Flutter Clean Architecture with TDD.
demo.mp4
Technology | Recommended Version | Installation Guide |
---|---|---|
Flutter | v3.0.4 | Flutter Official Docs |
Dart | v2.17.5 | Installed automatically with Flutter |
- Clone this project
- Run
flutter pub get
- Run
flutter gen-l10n
to generate localization files - Run
flutter pub run build_runner build --delete-conflicting-outputs
to generate freezes files - Run
flutter run --flavor stg -t lib/main_stg.dart
for staging or - Run
flutter run --flavor prd -t lib/main_prd.dart
for production - Run Test
flutter test
- To generate launcher icon based on Flavor
flutter pub run flutter_launcher_icons:main -f flutter_launcher_icons*
- To generate mock class
flutter 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
- Implement Go Router
Architecture Proposal by Resocoder
lib/
βββ config.dart
βββ core
β βββ app_route.dart
β βββ core.dart
β βββ core_mapper.dart
β βββ error
β β βββ error.dart
β β βββ exceptions.dart
β β βββ failure.dart
β βββ localization
β β βββ generated
β β β βββ strings.dart
β β β βββ strings_en.dart
β β β βββ strings_id.dart
β β βββ intl_en.arb
β β βββ intl_id.arb
β β βββ l10n.dart
β β βββ localization.dart
β βββ network
β β βββ dio_client.dart
β β βββ dio_interceptor.dart
β β βββ list_api.dart
β β βββ network.dart
β βββ resources
β β βββ dimens.dart
β β βββ images.dart
β β βββ palette.dart
β β βββ resources.dart
β β βββ styles.dart
β βββ usecase
β β βββ usecase.dart
β βββ widgets
β βββ button.dart
β βββ button_notification.dart
β βββ button_text.dart
β βββ circle_image.dart
β βββ color_loaders.dart
β βββ drop_down.dart
β βββ empty.dart
β βββ loading.dart
β βββ my_appbar.dart
β βββ parent.dart
β βββ spacer_h.dart
β βββ spacer_v.dart
β βββ text_f.dart
β βββ toast.dart
β βββ widgets.dart
βββ dependencies_injection.dart
βββ features
β βββ auth
β β βββ auth.dart
β β βββ data
β β β βββ data.dart
β β β βββ datasources
β β β β βββ auth_remote_datasources.dart
β β β β βββ datasources.dart
β β β βββ models
β β β β βββ login_response.dart
β β β β βββ models.dart
β β β β βββ register_response.dart
β β β βββ repositories
β β β βββ auth_repository_impl.dart
β β β βββ repositories.dart
β β βββ domain
β β β βββ domain.dart
β β β βββ entities
β β β β βββ entities.dart
β β β β βββ login.dart
β β β β βββ register.dart
β β β βββ repositories
β β β β βββ auth_repository.dart
β β β β βββ repositories.dart
β β β βββ usecases
β β β βββ post_login.dart
β β β βββ post_register.dart
β β β βββ usecases.dart
β β βββ presentation
β β βββ login
β β β βββ cubit
β β β β βββ auth_cubit.dart
β β β β βββ auth_state.dart
β β β β βββ cubit.dart
β β β βββ login.dart
β β β βββ login_page.dart
β β βββ presentation.dart
β β βββ register
β β βββ cubit
β β β βββ cubit.dart
β β β βββ register_cubit.dart
β β β βββ register_state.dart
β β βββ register.dart
β β βββ register_page.dart
β βββ features.dart
β βββ general
β β βββ general.dart
β β βββ presentation
β β βββ main
β β β βββ main.dart
β β β βββ main_page.dart
β β β βββ menu_drawer.dart
β β βββ presentation.dart
β β βββ settings
β β β βββ cubit
β β β β βββ cubit.dart
β β β β βββ settings_cubit.dart
β β β βββ settings.dart
β β β βββ settings_page.dart
β β βββ splashscreen
β β βββ splash_screen_page.dart
β β βββ splashscreen.dart
β βββ users
β βββ data
β β βββ data.dart
β β βββ datasources
β β β βββ datasources.dart
β β β βββ user_remote_datasources.dart
β β βββ models
β β β βββ models.dart
β β β βββ users_response.dart
β β βββ repositories
β β βββ repositories.dart
β β βββ users_repository_impl.dart
β βββ domain
β β βββ domain.dart
β β βββ entities
β β β βββ entities.dart
β β β βββ users.dart
β β βββ repositories
β β β βββ repositories.dart
β β β βββ users_repository.dart
β β βββ usecases
β β βββ get_users.dart
β β βββ usecases.dart
β βββ presentation
β β βββ dashboard
β β β βββ cubit
β β β β βββ cubit.dart
β β β β βββ users_cubit.dart
β β β β βββ users_state.dart
β β β βββ dashboard.dart
β β β βββ dashboard_page.dart
β β β βββ dashboard_success.dart
β β βββ presentation.dart
β βββ users.dart
βββ main_prd.dart
βββ main_stg.dart
βββ my_app.dart
βββ utils
βββ ext
β βββ context.dart
β βββ ext.dart
β βββ string.dart
βββ helper
β βββ common.dart
β βββ constant.dart
β βββ data_helper.dart
β βββ go_router_refresh_stream.dart
β βββ helper.dart
β βββ pref_manager.dart
βββ services
β βββ firebase_services.dart
β βββ services.dart
βββ utils.dart
test/
βββ features
β βββ auth
β β βββ data
β β β βββ datasources
β β β β βββ models
β β β β β βββ login_response_test.dart
β β β β β βββ register_response_test.dart
β β β β βββ repositories
β β β β βββ auth_remote_datasources_test.dart
β β β βββ repositories
β β β βββ auth_repository_impl_test.dart
β β βββ domain
β β β βββ usecases
β β β βββ post_login_test.dart
β β β βββ post_register_test.dart
β β βββ presentation
β β βββ login
β β β βββ cubit
β β β β βββ auth_cubit_test.dart
β β β β βββ auth_cubit_test.mocks.dart
β β β β βββ auth_state_test.dart
β β β βββ login_page_test.dart
β β βββ register
β β βββ cubit
β β β βββ register_cubit_test.dart
β β β βββ register_cubit_test.mocks.dart
β β β βββ register_state_test.dart
β β βββ register_page_test.dart
β βββ general
β β βββ presentation
β β βββ settings
β β βββ cubit
β β β βββ settings_cubit_test.dart
β β βββ settings_page_test.dart
β βββ users
β βββ data
β β βββ datasources
β β β βββ models
β β β β βββ users_response_test.dart
β β β βββ repositories
β β β βββ users_remote_datasources_test.dart
β β βββ repositories
β β βββ users_repository_impl_test.dart
β βββ domain
β β βββ usecases
β β βββ get_users_test.dart
β βββ presentation
β βββ dashboard
β βββ cubit
β β βββ users_cubit_test.dart
β β βββ users_cubit_test.mocks.dart
β β βββ users_state_test.dart
β βββ dashboard_page_test.dart
βββ helpers
βββ data_dummy
β βββ list_user_empty_response.json
β βββ list_user_response.json
β βββ login_success_response.json
β βββ login_unsuccessful_response.json
β βββ register_success_response.json
β βββ register_unsuccessful_response.json
βββ json_reader.dart
βββ paths.dart
βββ test_mock.dart
βββ test_mock.mocks.dart