{"id":22964710,"url":"https://github.com/alexisl61/fluttertemplate","last_synced_at":"2025-04-19T13:25:24.148Z","repository":{"id":259197584,"uuid":"843479206","full_name":"AlexisL61/FlutterTemplate","owner":"AlexisL61","description":"My personal template when starting a new flutter project","archived":false,"fork":false,"pushed_at":"2025-01-14T18:45:07.000Z","size":285,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T15:09:02.777Z","etag":null,"topics":["flutter","template","viewmodel"],"latest_commit_sha":null,"homepage":"","language":"C++","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/AlexisL61.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-16T15:51:37.000Z","updated_at":"2025-01-25T11:39:16.000Z","dependencies_parsed_at":"2025-01-14T19:40:39.639Z","dependency_job_id":"edd1a144-48fb-46c6-a941-35b9b4b8b2ce","html_url":"https://github.com/AlexisL61/FlutterTemplate","commit_stats":null,"previous_names":["alexisl61/fluttertemplate"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisL61%2FFlutterTemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisL61%2FFlutterTemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisL61%2FFlutterTemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisL61%2FFlutterTemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexisL61","download_url":"https://codeload.github.com/AlexisL61/FlutterTemplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237701579,"owners_count":19352909,"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":["flutter","template","viewmodel"],"created_at":"2024-12-14T20:12:02.095Z","updated_at":"2025-04-19T13:25:24.139Z","avatar_url":"https://github.com/AlexisL61.png","language":"C++","readme":"# flutter_template\n\nMy personal template when starting a new flutter project. It includes a dependency injection system (get_it), a folder architecture and a model-viewmodel-view implementation for flutter.\n\n## Quick start \n\n- Launch with provider Dummy : `flutter run -t ./lib/main_dummy.dart`\n- Launch with provider Live : `flutter run -t ./lib/main_live.dart`\n\n## Providers\n\nThis template use two providers to split the repositories in case you are not in the same environment. There are two providers that are not implemented : \n- Live : Which take a baseUrl to communicate with an api\n- Dummy : Which use static string to simulate the communication to the api\n\nTo split this behavior, each provider instantiate their own repositories in their provider file (dummy will instantiate the DummyExampleRepository and live will instantiate the LiveExampleRepository).\n\n## Folders\n\n### Components\n\nComponents are used to store small widget that can be reused by any page or dialog of the app.\n\nThey can be either :\n- An atom : A small widget\n- A molecule : A widget containing atoms\n- An organism : A widget containing molecules\n\nIf a component behavior become too big, there should be a ViewModel with it\n\n### Model\n\nThe model contains every data class and the core concept of the Model-View-ViewModel.\n\n### Pages\n\nPages contains every pages of the app. It's a screen the user will see containing components and specific widget\n\nEvery pages should at least have a ViewModel.\n\n### Providers\n\nThe providers help you splitting your code behavior depending of the environment.\n\n### Services\n\nEvery services give you a way to retrieve data and create data class with it. They can only be called from Repositories.\n\n### Repositories\n\nEvery repositories helps you calling services and transformers to retrieve data as you want.\n\n### Transformers \n\nTransformers let you transform data, from one class to an another. They can only be called from Repositories.\n\n### Utils\n\nUtils contain every extensions for the project. It can be extensions for base class (e.g. string, int, boolean) and for specific classes too.\n\n## Diagram\n\n```mermaid\nflowchart LR\n    Page\n    ViewModel\n    Component\n    Repository\n    Transformer\n    Service\n    DataClass[Data class]\n    Page\u003c--\u003eViewModel\n    Page\u003c--\u003eComponent\n    ViewModel--\u003eRepository\n    Repository--\u003eTransformer\n    Repository--\u003eService\n    Component .-\u003eViewModel\n    Service-- Create --\u003eDataClass\n    Transformer-- Transform --\u003eDataClass\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisl61%2Ffluttertemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexisl61%2Ffluttertemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisl61%2Ffluttertemplate/lists"}