{"id":13685566,"url":"https://github.com/HasithaAthukorala/flutter-clean-architecture-sample","last_synced_at":"2025-05-01T04:31:42.500Z","repository":{"id":38894646,"uuid":"242294270","full_name":"HasithaAthukorala/flutter-clean-architecture-sample","owner":"HasithaAthukorala","description":"Sample for flutter clean architecture with blocs and test driven development","archived":false,"fork":false,"pushed_at":"2021-04-20T04:04:26.000Z","size":275,"stargazers_count":242,"open_issues_count":2,"forks_count":60,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-12T07:38:12.299Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HasithaAthukorala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-22T06:48:39.000Z","updated_at":"2024-10-16T09:30:24.000Z","dependencies_parsed_at":"2022-07-16T23:30:44.259Z","dependency_job_id":null,"html_url":"https://github.com/HasithaAthukorala/flutter-clean-architecture-sample","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HasithaAthukorala%2Fflutter-clean-architecture-sample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HasithaAthukorala%2Fflutter-clean-architecture-sample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HasithaAthukorala%2Fflutter-clean-architecture-sample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HasithaAthukorala%2Fflutter-clean-architecture-sample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HasithaAthukorala","download_url":"https://codeload.github.com/HasithaAthukorala/flutter-clean-architecture-sample/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251824433,"owners_count":21649865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T14:00:53.754Z","updated_at":"2025-05-01T04:31:41.620Z","avatar_url":"https://github.com/HasithaAthukorala.png","language":"Dart","funding_links":[],"categories":["Dart"],"sub_categories":[],"readme":"# Flutter clean architecture sample\n\n - Clean architecture with SOLID principals\n - Developed under test driven development\n - Blocs has been used for state management\n - Includes unit tests, widget tests, integration tests and CI/CD\n\n# File Structure\n\n```bash\n lib\n ├── core\n │   ├── error\n │   │   ├── exceptions.dart\n │   │   └── failures.dart\n │   ├── network\n │   │   ├── network_info.dart\n │   │   ├── rest_client_service.chopper.dart\n │   │   └── rest_client_service.dart\n │   ├── usecases\n │   │   ├── fetch_token.dart\n │   │   └── usecase.dart\n │   ├── utils\n │   │   ├── constants.dart\n │   │   ├── router.dart\n │   │   └── theme.dart\n │   └── widgets\n │       └── custom_snak_bar.dart\n ├── injection_container.dart\n ├── main.dart\n └── screens\n     ├── change_password\n     │   ├── data\n     │   │   ├── datasources\n     │   │   │   ├── change_password_local_datasource.dart\n     │   │   │   └── change_password_remote_datasource.dart\n     │   │   └── repositories\n     │   │       └── change_password_repository_impl.dart\n     │   ├── domain\n     │   │   ├── repositories\n     │   │   │   └── change_password_repository.dart\n     │   │   └── usecases\n     │   │       └── change_password.dart\n     │   └── presentation\n     │       ├── blocs\n     │       │   └── change_password\n     │       │       ├── bloc.dart\n     │       │       ├── change_password_bloc.dart\n     │       │       ├── change_password_event.dart\n     │       │       └── change_password_state.dart\n     │       └── page\n     │           └── change_password.dart\n     ├── home\n     │   ├── data\n     │   │   ├── datasources\n     │   │   │   ├── home_local_datasource.dart\n     │   │   │   └── home_remote_datasource.dart\n     │   │   └── repositories\n     │   │       └── home_repository_impl.dart\n     │   ├── domain\n     │   │   ├── repositories\n     │   │   │   └── home_repository.dart\n     │   │   └── usecases\n     │   │       └── logout_user.dart\n     │   └── presentation\n     │       ├── blocs\n     │       │   └── log_out\n     │       │       ├── bloc.dart\n     │       │       ├── log_out_bloc.dart\n     │       │       ├── log_out_event.dart\n     │       │       └── log_out_state.dart\n     │       └── page\n     │           └── home.dart\n     └── login\n         ├── data\n         │   ├── datasources\n         │   │   ├── login_local_datasource.dart\n         │   │   └── login_remote_datasource.dart\n         │   ├── models\n         │   │   ├── login_model.dart\n         │   │   └── login_model.g.dart\n         │   └── repositories\n         │       └── login_repository_impl.dart\n         ├── domain\n         │   ├── entities\n         │   │   └── login.dart\n         │   ├── repositories\n         │   │   └── login_repository.dart\n         │   └── usecases\n         │       └── login_user.dart\n         └── presentation\n             ├── blocs\n             │   └── user_login\n             │       ├── bloc.dart\n             │       ├── user_login_bloc.dart\n             │       ├── user_login_event.dart\n             │       └── user_login_state.dart\n             └── page\n                 └── login.dart\n```\n\n\n# File structure for tests\n\n```bash\n test\n ├── core\n │   ├── network\n │   │   └── network_info_test.dart\n │   └── usecases\n │       └── fetch_token_test.dart\n ├── fixtures\n │   ├── fixture_reader.dart\n │   ├── user_login.json\n │   └── user_login_null_token.json\n └── screens\n     ├── change_password\n     │   ├── data\n     │   │   ├── datasources\n     │   │   │   └── change_password_remote_datasource_test.dart\n     │   │   └── repositories\n     │   │       └── change_password_repository_impl_test.dart\n     │   ├── domain\n     │   │   └── usecases\n     │   │       └── change_password_test.dart\n     │   └── presentation\n     │       └── blocs\n     │           └── change_password\n     │               └── change_password_bloc_test.dart\n     ├── home\n     │   ├── data\n     │   │   ├── datasources\n     │   │   │   ├── home_local_datasource_test.dart\n     │   │   │   └── home_remote_datasource_test.dart\n     │   │   └── repositories\n     │   │       └── home_repository_impl_test.dart\n     │   ├── domain\n     │   │   └── usecases\n     │   │       └── logout_user_test.dart\n     │   └── presentation\n     │       └── blocs\n     │           └── log_out\n     │               └── log_out_bloc_test.dart\n     └── login\n         ├── data\n         │   ├── datasources\n         │   │   ├── login_local_datasource_test.dart\n         │   │   └── login_remote_datasource_test.dart\n         │   ├── models\n         │   │   └── login_model_test.dart\n         │   └── repositories\n         │       └── login_repository_impl_test.dart\n         ├── domain\n         │   └── usecases\n         │       └── login_user_test.dart\n         └── presentation\n             └── blocs\n                 └── user_login\n                     └── user_login_bloc_test.dart\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHasithaAthukorala%2Fflutter-clean-architecture-sample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHasithaAthukorala%2Fflutter-clean-architecture-sample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHasithaAthukorala%2Fflutter-clean-architecture-sample/lists"}