π±
Flutter App Auth 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
π
Pre-requisites Technology | Recommended Version | Installation Guide |
---|---|---|
Flutter | v3.0.4 | Flutter Official Docs |
Dart | v2.17.5 | Installed automatically with Flutter |
π
Get Started - Clone this project
- 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*
β
Feature - 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
π
TODO - Integration Test
- Implement multi flavor
Resocoder
Architecture Proposal byProject Structure
lib
βββ core
β βββ 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
β βββ usecase
β βββ usecase.dart
βββ data
β βββ data.dart
β βββ datasources
β β βββ datasources.dart
β β βββ local
β β β βββ data_helper.dart
β β β βββ local.dart
β β β βββ pref_manager.dart
β β βββ remote
β β βββ auth_remote_datasources.dart
β β βββ model
β β β βββ auth
β β β β βββ auth.dart
β β β β βββ login_response.dart
β β β β βββ register_response.dart
β β β β βββ users_response.dart
β β β βββ model.dart
β β βββ remote.dart
β β βββ services
β β βββ dio_client.dart
β β βββ dio_interceptor.dart
β β βββ list_api.dart
β β βββ services.dart
β βββ repositories
β βββ auth_repository_impl.dart
β βββ repositories.dart
βββ di
β βββ di.dart
βββ domain
β βββ domain.dart
β βββ entities
β β βββ auth
β β β βββ auth.dart
β β β βββ login.dart
β β β βββ register.dart
β β β βββ users.dart
β β βββ entities.dart
β βββ repositories
β β βββ auth_repository.dart
β β βββ repositories.dart
β βββ usecases
β βββ auth
β β βββ auth.dart
β β βββ get_users.dart
β β βββ post_login.dart
β β βββ post_register.dart
β βββ usecases.dart
βββ main.dart
βββ presentation
β βββ page
β β βββ app_route.dart
β β βββ auth
β β β βββ auth.dart
β β β βββ cubit
β β β β βββ cubit.dart
β β β β βββ login_cubit.dart
β β β β βββ login_state.dart
β β β β βββ register_cubit.dart
β β β β βββ register_state.dart
β β β βββ login_page.dart
β β β βββ register_page.dart
β β βββ main
β β β βββ cubit
β β β β βββ cubit.dart
β β β β βββ navdrawer_cubit.dart
β β β βββ dashboard
β β β β βββ cubit
β β β β β βββ cubit.dart
β β β β β βββ users_cubit.dart
β β β β β βββ users_state.dart
β β β β βββ dashboard.dart
β β β β βββ dashboard_page.dart
β β β β βββ dashboard_success.dart
β β β βββ main.dart
β β β βββ main_page.dart
β β β βββ menu_drawer.dart
β β β βββ settings
β β β βββ cubit
β β β β βββ cubit.dart
β β β β βββ settings_cubit.dart
β β β βββ settings.dart
β β β βββ settings_page.dart
β β βββ pages.dart
β β βββ splashscreen
β β βββ splash_screen_page.dart
β βββ presentation.dart
β βββ resources
β β βββ dimens.dart
β β βββ images.dart
β β βββ palette.dart
β β βββ resources.dart
β β βββ styles.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
βββ utils
βββ ext
β βββ context.dart
β βββ ext.dart
β βββ string.dart
βββ helper
β βββ common.dart
β βββ constant.dart
β βββ helper.dart
βββ utils.dart
Test Project Structure
test
βββ data
β βββ datasources
β β βββ remote
β β βββ auth_remote_datasources_test.dart
β β βββ model
β β βββ auth
β β βββ login_response_test.dart
β β βββ register_response_test.dart
β β βββ users_response_test.dart
β βββ repositories
β βββ auth_repository_impl_test.dart
βββ domain
β βββ usecases
β βββ auth
β βββ get_users_test.dart
β βββ post_login_test.dart
β βββ post_register_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
βββ presentation
βββ page
βββ auth
β βββ cubit
β β βββ login_cubit_test.dart
β β βββ login_cubit_test.mocks.dart
β β βββ login_state_test.dart
β β βββ register_cubit_test.dart
β β βββ register_cubit_test.mocks.dart
β β βββ register_state_test.dart
β βββ login_page_test.dart
β βββ register_page_test.dart
βββ main
βββ cubit
β βββ navdrawer_cubit_test.dart
βββ dashboard
β βββ cubit
β β βββ users_cubit_test.dart
β β βββ users_cubit_test.mocks.dart
β β βββ users_state_test.dart
β βββ dashboard_page_test.dart
βββ settings
βββ cubit
β βββ settings_cubit_test.dart
βββ settings_page_test.dart