├── .github ├── dependabot.yml └── workflows │ ├── gen-cov.yml │ ├── scripts │ ├── install-tools.sh │ └── verify-pub-score.sh │ └── web-deploy.yml ├── .gitignore ├── .pubignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── docs.json ├── docs ├── assets │ ├── adapter_layer.png │ ├── clean_architecture_layers.png │ ├── counter-page.png │ ├── domain_layer.png │ ├── feature_design.png │ ├── icon_logomark.png │ ├── icon_logomark_dark.png │ ├── interface_layer.png │ ├── login-page.png │ ├── pokemon-app.png │ └── ui_layer.png ├── codelabs │ ├── clean-framework │ │ ├── adapter-layer.mdx │ │ ├── architecture-comparison.mdx │ │ ├── architecture-overview.mdx │ │ ├── bonus-theme-example.mdx │ │ ├── domain-layer.mdx │ │ ├── external-interface-layer.mdx │ │ ├── intro.mdx │ │ ├── migration-guide.mdx │ │ ├── project-structure.mdx │ │ └── ui-layer.mdx │ └── feature-flag │ │ ├── feature-builder.mdx │ │ ├── feature-client.mdx │ │ ├── feature-provider.mdx │ │ ├── flag-schema.mdx │ │ ├── get-familiar.mdx │ │ ├── intro.mdx │ │ ├── non-ui-flag-resolution.mdx │ │ ├── starter.mdx │ │ └── test.mdx ├── index.mdx └── resources.mdx ├── images └── clean-framework.png ├── melos.yaml ├── packages ├── clean_framework │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ ├── build.gradle │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── ic_launcher-playstore.png │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── acmesoftware │ │ │ │ │ │ │ └── clean_framework_example │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── settings.gradle │ │ ├── assets │ │ │ └── sad-flareon.png │ │ ├── ios │ │ │ ├── .gitignore │ │ │ ├── Flutter │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ ├── lib │ │ │ ├── app │ │ │ │ └── poke_app.dart │ │ │ ├── core │ │ │ │ ├── dependency_providers.dart │ │ │ │ ├── pokemon │ │ │ │ │ ├── pokemon_external_interface.dart │ │ │ │ │ ├── pokemon_failure_response.dart │ │ │ │ │ ├── pokemon_request.dart │ │ │ │ │ └── pokemon_success_response.dart │ │ │ │ └── validators │ │ │ │ │ ├── src │ │ │ │ │ ├── email_input_field_validator.dart │ │ │ │ │ └── password_input_field_validator.dart │ │ │ │ │ └── validators.dart │ │ │ ├── features │ │ │ │ ├── form │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── form_domain_models.dart │ │ │ │ │ │ ├── form_entity.dart │ │ │ │ │ │ └── form_use_case.dart │ │ │ │ │ └── presentation │ │ │ │ │ │ ├── form_presenter.dart │ │ │ │ │ │ ├── form_ui.dart │ │ │ │ │ │ └── form_view_model.dart │ │ │ │ ├── home │ │ │ │ │ ├── domain │ │ │ │ │ │ ├── home_domain_inputs.dart │ │ │ │ │ │ ├── home_domain_models.dart │ │ │ │ │ │ ├── home_entity.dart │ │ │ │ │ │ └── home_use_case.dart │ │ │ │ │ ├── external_interface │ │ │ │ │ │ └── pokemon_collection_gateway.dart │ │ │ │ │ ├── models │ │ │ │ │ │ └── pokemon_model.dart │ │ │ │ │ └── presentation │ │ │ │ │ │ ├── home_presenter.dart │ │ │ │ │ │ ├── home_ui.dart │ │ │ │ │ │ └── home_view_model.dart │ │ │ │ └── profile │ │ │ │ │ ├── domain │ │ │ │ │ ├── profile_domain_inputs.dart │ │ │ │ │ ├── profile_domain_models.dart │ │ │ │ │ ├── profile_entity.dart │ │ │ │ │ └── profile_use_case.dart │ │ │ │ │ ├── external_interface │ │ │ │ │ ├── pokemon_profile_gateway.dart │ │ │ │ │ └── pokemon_species_gateway.dart │ │ │ │ │ ├── models │ │ │ │ │ ├── pokemon_profile_model.dart │ │ │ │ │ └── pokemon_species_model.dart │ │ │ │ │ └── presentation │ │ │ │ │ ├── profile_presenter.dart │ │ │ │ │ ├── profile_ui.dart │ │ │ │ │ └── profile_view_model.dart │ │ │ ├── main.dart │ │ │ ├── providers.dart │ │ │ ├── providers │ │ │ │ ├── external_interface_providers.dart │ │ │ │ ├── gateway_providers.dart │ │ │ │ └── use_case_providers.dart │ │ │ ├── routing.dart │ │ │ ├── routing │ │ │ │ ├── poke_router.dart │ │ │ │ └── routes.dart │ │ │ └── widgets │ │ │ │ ├── app_scope.dart │ │ │ │ ├── fields.dart │ │ │ │ ├── fields │ │ │ │ ├── checkbox_input_field.dart │ │ │ │ ├── dropdown_input_field.dart │ │ │ │ ├── form_button.dart │ │ │ │ └── text_input_field.dart │ │ │ │ ├── pokemon_card.dart │ │ │ │ ├── pokemon_search_field.dart │ │ │ │ ├── spotlight.dart │ │ │ │ └── svg_palette_card.dart │ │ ├── linux │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── generated_plugin_registrant.cc │ │ │ │ ├── generated_plugin_registrant.h │ │ │ │ └── generated_plugins.cmake │ │ │ ├── main.cc │ │ │ ├── my_application.cc │ │ │ └── my_application.h │ │ ├── macos │ │ │ ├── .gitignore │ │ │ ├── Podfile │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── app_icon_1024.png │ │ │ │ │ ├── app_icon_128.png │ │ │ │ │ ├── app_icon_16.png │ │ │ │ │ ├── app_icon_256.png │ │ │ │ │ ├── app_icon_32.png │ │ │ │ │ ├── app_icon_512.png │ │ │ │ │ └── app_icon_64.png │ │ │ │ ├── Base.lproj │ │ │ │ └── MainMenu.xib │ │ │ │ ├── Configs │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ ├── Debug.xcconfig │ │ │ │ ├── Release.xcconfig │ │ │ │ └── Warnings.xcconfig │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ ├── Info.plist │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ └── Release.entitlements │ │ ├── pubspec.yaml │ │ ├── snap │ │ │ └── gui │ │ │ │ ├── app_icon.desktop │ │ │ │ └── app_icon.png │ │ ├── test │ │ │ ├── core │ │ │ │ └── pokemon │ │ │ │ │ └── pokemon_external_interface_test.dart │ │ │ ├── features │ │ │ │ ├── home │ │ │ │ │ ├── domain │ │ │ │ │ │ └── home_use_case_test.dart │ │ │ │ │ ├── external_interface │ │ │ │ │ │ └── pokemon_collection_gateway_test.dart │ │ │ │ │ └── presentation │ │ │ │ │ │ ├── home_presenter_test.dart │ │ │ │ │ │ └── home_ui_test.dart │ │ │ │ └── profile │ │ │ │ │ ├── domain │ │ │ │ │ └── profile_use_case_test.dart │ │ │ │ │ ├── external_interface │ │ │ │ │ ├── pokemon_profile_gateway_test.dart │ │ │ │ │ └── pokemon_species_gateway_test.dart │ │ │ │ │ └── presentation │ │ │ │ │ ├── profile_presenter_test.dart │ │ │ │ │ └── profile_ui_test.dart │ │ │ ├── flow_test.dart │ │ │ ├── helpers │ │ │ │ └── test_cache_manager.dart │ │ │ └── widgets │ │ │ │ ├── app_scope_test.dart │ │ │ │ ├── pokemon_card_test.dart │ │ │ │ └── svg_palette_card_test.dart │ │ ├── web │ │ │ ├── CNAME │ │ │ ├── favicon.png │ │ │ ├── icons │ │ │ │ ├── Icon-192.png │ │ │ │ ├── Icon-512.png │ │ │ │ ├── Icon-maskable-192.png │ │ │ │ └── Icon-maskable-512.png │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── windows │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── resources │ │ │ └── app_icon.ico │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ ├── lib │ │ ├── clean_framework.dart │ │ ├── clean_framework_defaults.dart │ │ ├── clean_framework_legacy.dart │ │ ├── fix_data.yaml │ │ └── src │ │ │ ├── app_providers_container.dart │ │ │ ├── core │ │ │ ├── app_provider_scope.dart │ │ │ ├── clean_framework_provider.dart │ │ │ ├── core.dart │ │ │ ├── dependency │ │ │ │ └── dependency_provider.dart │ │ │ ├── external_interface │ │ │ │ ├── external_interface.dart │ │ │ │ ├── external_interface_delegate.dart │ │ │ │ ├── external_interface_provider.dart │ │ │ │ ├── request.dart │ │ │ │ └── response.dart │ │ │ ├── gateway │ │ │ │ ├── gateway.dart │ │ │ │ └── gateway_provider.dart │ │ │ └── use_case │ │ │ │ ├── entity.dart │ │ │ │ ├── helpers │ │ │ │ ├── domain_dto.dart │ │ │ │ ├── domain_input.dart │ │ │ │ ├── domain_input_filter_map.dart │ │ │ │ ├── domain_model.dart │ │ │ │ ├── domain_model_filter_map.dart │ │ │ │ ├── request_subscription_map.dart │ │ │ │ ├── use_case_input.dart │ │ │ │ └── use_case_transformer.dart │ │ │ │ ├── provider │ │ │ │ ├── auto_dispose.dart │ │ │ │ ├── base.dart │ │ │ │ ├── bridge.dart │ │ │ │ ├── family.dart │ │ │ │ └── use_case_provider.dart │ │ │ │ ├── use_case.dart │ │ │ │ ├── use_case_debounce_mixin.dart │ │ │ │ └── use_case_helpers.dart │ │ │ ├── defaults │ │ │ └── feature_provider │ │ │ │ ├── engine │ │ │ │ ├── evaluation_engine.dart │ │ │ │ ├── json_evaluation_engine.dart │ │ │ │ └── open_feature_flags.dart │ │ │ │ └── json_feature_provider.dart │ │ │ ├── open_feature │ │ │ ├── open_feature.dart │ │ │ └── src │ │ │ │ ├── core │ │ │ │ ├── enums.dart │ │ │ │ ├── enums │ │ │ │ │ ├── error_code.dart │ │ │ │ │ ├── flag_value_type.dart │ │ │ │ │ └── reason.dart │ │ │ │ ├── feature_client.dart │ │ │ │ ├── features.dart │ │ │ │ ├── flag_evaluation_lifecycle.dart │ │ │ │ └── resolution_details.dart │ │ │ │ ├── evaluation_context │ │ │ │ ├── context_transformation_mixin.dart │ │ │ │ └── evaluation_context.dart │ │ │ │ ├── exceptions │ │ │ │ ├── open_feature_exception.dart │ │ │ │ └── src │ │ │ │ │ ├── flag_not_found_exception.dart │ │ │ │ │ ├── parse_exception.dart │ │ │ │ │ └── type_mismatch_exception.dart │ │ │ │ ├── flag_evaluation │ │ │ │ ├── flag_evaluation_details.dart │ │ │ │ └── flag_evaluation_options.dart │ │ │ │ ├── hook │ │ │ │ ├── hook.dart │ │ │ │ ├── hook_context.dart │ │ │ │ └── hook_hints.dart │ │ │ │ ├── open_feature_client.dart │ │ │ │ └── provider │ │ │ │ ├── feature_provider.dart │ │ │ │ └── no_op_feature_provider.dart │ │ │ ├── presentation │ │ │ ├── presentation.dart │ │ │ ├── presenter │ │ │ │ ├── presenter.dart │ │ │ │ └── view_model.dart │ │ │ └── ui │ │ │ │ └── ui.dart │ │ │ ├── providers │ │ │ ├── bridge_gateway_provider.dart │ │ │ ├── external_interface.dart │ │ │ ├── external_interface_provider.dart │ │ │ ├── gateway.dart │ │ │ ├── gateway_provider.dart │ │ │ ├── overridable_provider.dart │ │ │ ├── presenter.dart │ │ │ ├── ui.dart │ │ │ └── use_case_provider.dart │ │ │ ├── utilities │ │ │ ├── clean_framework_observer.dart │ │ │ ├── deserializer.dart │ │ │ ├── either.dart │ │ │ ├── logger.dart │ │ │ └── network_logger.dart │ │ │ └── widgets │ │ │ ├── src │ │ │ ├── feature_builder.dart │ │ │ └── feature_scope.dart │ │ │ └── widgets.dart │ ├── pubspec.yaml │ ├── screenshots │ │ └── clean-framework.png │ ├── test │ │ ├── core │ │ │ ├── app_provider_scope_test.dart │ │ │ ├── external_interface │ │ │ │ └── external_interface_test.dart │ │ │ ├── gateway │ │ │ │ ├── gateway_provider_test.dart │ │ │ │ └── gateway_test.dart │ │ │ └── use_case │ │ │ │ ├── use_case_provider_test.dart │ │ │ │ ├── use_case_test.dart │ │ │ │ └── use_case_transformer_test.dart │ │ ├── presentation │ │ │ ├── presenter │ │ │ │ └── presenter_test.dart │ │ │ └── ui │ │ │ │ └── ui_test.dart │ │ ├── providers │ │ │ ├── entity_test.dart │ │ │ ├── external_interface_integration_test.dart │ │ │ ├── gateway_integration_test.dart │ │ │ ├── gateway_unit_test.dart │ │ │ ├── presenter_widget_test.dart │ │ │ ├── providers_test.dart │ │ │ ├── ui_test.dart │ │ │ └── use_case_transformer_test.dart │ │ ├── utilities │ │ │ ├── clean_framework_observer_test.dart │ │ │ ├── deserializer_test.dart │ │ │ ├── either_test.dart │ │ │ └── network_logger_test.dart │ │ └── widgets │ │ │ └── feature_builder_test.dart │ └── theme_example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ ├── .gitignore │ │ ├── app │ │ │ ├── build.gradle │ │ │ └── src │ │ │ │ ├── debug │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── kotlin │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── theme_example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── res │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-night │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values │ │ │ │ │ └── styles.xml │ │ │ │ └── profile │ │ │ │ └── AndroidManifest.xml │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ │ ├── ios │ │ ├── .gitignore │ │ ├── Flutter │ │ │ ├── AppFrameworkInfo.plist │ │ │ ├── Debug.xcconfig │ │ │ └── Release.xcconfig │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── Runner-Bridging-Header.h │ │ └── RunnerTests │ │ │ └── RunnerTests.swift │ │ ├── lib │ │ ├── app │ │ │ └── theme_example_app.dart │ │ ├── features │ │ │ └── home │ │ │ │ ├── domain │ │ │ │ ├── home_domain_models.dart │ │ │ │ ├── home_entity.dart │ │ │ │ └── home_use_case.dart │ │ │ │ └── presentation │ │ │ │ ├── home_presenter.dart │ │ │ │ ├── home_ui.dart │ │ │ │ ├── home_view_model.dart │ │ │ │ └── theme │ │ │ │ ├── home_theme_presenter.dart │ │ │ │ ├── home_theme_ui.dart │ │ │ │ └── home_theme_view_model.dart │ │ ├── main.dart │ │ ├── providers.dart │ │ ├── providers │ │ │ └── use_case_providers.dart │ │ └── router.dart │ │ ├── linux │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ ├── main.cc │ │ ├── my_application.cc │ │ └── my_application.h │ │ ├── macos │ │ ├── .gitignore │ │ ├── Runner.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ └── Runner.xcscheme │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ ├── Runner │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── app_icon_1024.png │ │ │ │ │ ├── app_icon_128.png │ │ │ │ │ ├── app_icon_16.png │ │ │ │ │ ├── app_icon_256.png │ │ │ │ │ ├── app_icon_32.png │ │ │ │ │ ├── app_icon_512.png │ │ │ │ │ └── app_icon_64.png │ │ │ ├── Base.lproj │ │ │ │ └── MainMenu.xib │ │ │ ├── Configs │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ ├── Debug.xcconfig │ │ │ │ ├── Release.xcconfig │ │ │ │ └── Warnings.xcconfig │ │ │ ├── DebugProfile.entitlements │ │ │ ├── Info.plist │ │ │ ├── MainFlutterWindow.swift │ │ │ └── Release.entitlements │ │ └── RunnerTests │ │ │ └── RunnerTests.swift │ │ ├── pubspec.yaml │ │ ├── test │ │ └── widget_test.dart │ │ ├── web │ │ ├── favicon.png │ │ ├── icons │ │ │ ├── Icon-192.png │ │ │ ├── Icon-512.png │ │ │ ├── Icon-maskable-192.png │ │ │ └── Icon-maskable-512.png │ │ ├── index.html │ │ └── manifest.json │ │ └── windows │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── flutter │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ │ └── runner │ │ ├── CMakeLists.txt │ │ ├── Runner.rc │ │ ├── flutter_window.cpp │ │ ├── flutter_window.h │ │ ├── main.cpp │ │ ├── resource.h │ │ ├── resources │ │ └── app_icon.ico │ │ ├── runner.exe.manifest │ │ ├── utils.cpp │ │ ├── utils.h │ │ ├── win32_window.cpp │ │ └── win32_window.h ├── clean_framework_firestore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── lib │ │ ├── clean_framework_firestore.dart │ │ └── src │ │ │ ├── firebase_client.dart │ │ │ ├── firebase_client_fake.dart │ │ │ ├── firebase_external_interface.dart │ │ │ ├── firebase_gateway.dart │ │ │ ├── firebase_requests.dart │ │ │ ├── firebase_responses.dart │ │ │ └── firebase_watcher_gateway.dart │ ├── pubspec.yaml │ └── test │ │ ├── firebase_client_test.dart │ │ ├── firebase_external_interface_test.dart │ │ ├── firebase_gateway_test.dart │ │ └── firebase_watcher_gateway_test.dart ├── clean_framework_graphql │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── graphql_example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ ├── build.gradle │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── cf_example │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── settings.gradle │ │ ├── ios │ │ │ ├── .gitignore │ │ │ ├── Flutter │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ │ └── RunnerTests │ │ │ │ └── RunnerTests.swift │ │ ├── lib │ │ │ ├── app │ │ │ │ └── example_app.dart │ │ │ ├── features │ │ │ │ └── home │ │ │ │ │ ├── domain │ │ │ │ │ ├── home_domain_inputs.dart │ │ │ │ │ ├── home_domain_models.dart │ │ │ │ │ ├── home_entity.dart │ │ │ │ │ └── home_use_case.dart │ │ │ │ │ ├── external_interface │ │ │ │ │ └── home_gateway.dart │ │ │ │ │ ├── models │ │ │ │ │ └── pokemon_model.dart │ │ │ │ │ └── presentation │ │ │ │ │ ├── home_presenter.dart │ │ │ │ │ ├── home_ui.dart │ │ │ │ │ └── home_view_model.dart │ │ │ ├── main.dart │ │ │ ├── providers.dart │ │ │ └── router.dart │ │ ├── linux │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── generated_plugin_registrant.cc │ │ │ │ ├── generated_plugin_registrant.h │ │ │ │ └── generated_plugins.cmake │ │ │ ├── main.cc │ │ │ ├── my_application.cc │ │ │ └── my_application.h │ │ ├── macos │ │ │ ├── .gitignore │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ ├── app_icon_1024.png │ │ │ │ │ │ ├── app_icon_128.png │ │ │ │ │ │ ├── app_icon_16.png │ │ │ │ │ │ ├── app_icon_256.png │ │ │ │ │ │ ├── app_icon_32.png │ │ │ │ │ │ ├── app_icon_512.png │ │ │ │ │ │ └── app_icon_64.png │ │ │ │ ├── Base.lproj │ │ │ │ │ └── MainMenu.xib │ │ │ │ ├── Configs │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ ├── Info.plist │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ └── Release.entitlements │ │ │ └── RunnerTests │ │ │ │ └── RunnerTests.swift │ │ ├── pubspec.yaml │ │ ├── test │ │ │ └── home_test.dart │ │ ├── web │ │ │ ├── favicon.png │ │ │ ├── icons │ │ │ │ ├── Icon-192.png │ │ │ │ ├── Icon-512.png │ │ │ │ ├── Icon-maskable-192.png │ │ │ │ └── Icon-maskable-512.png │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── windows │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── resources │ │ │ └── app_icon.ico │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ ├── lib │ │ ├── clean_framework_graphql.dart │ │ └── src │ │ │ ├── graphql_error_policy.dart │ │ │ ├── graphql_external_interface.dart │ │ │ ├── graphql_fetch_policy.dart │ │ │ ├── graphql_gateway.dart │ │ │ ├── graphql_logger.dart │ │ │ ├── graphql_method.dart │ │ │ ├── graphql_requests.dart │ │ │ ├── graphql_responses.dart │ │ │ └── graphql_service.dart │ ├── pubspec.yaml │ └── test │ │ ├── graphql_external_interface_test.dart │ │ ├── graphql_gateway_test.dart │ │ └── graphql_service_test.dart ├── clean_framework_http │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── example │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── android │ │ │ ├── .gitignore │ │ │ ├── app │ │ │ │ ├── build.gradle │ │ │ │ └── src │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── acmesoftware │ │ │ │ │ │ │ └── clean_framework_http_example │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── settings.gradle │ │ ├── ios │ │ │ ├── .gitignore │ │ │ ├── Flutter │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── LaunchImage.imageset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ ├── lib │ │ │ ├── app │ │ │ │ └── clean_framework_http_example_app.dart │ │ │ ├── core │ │ │ │ └── external_interface │ │ │ │ │ └── pokemon_external_interface.dart │ │ │ ├── features │ │ │ │ └── home │ │ │ │ │ ├── adapter │ │ │ │ │ ├── pokemon_gateway.dart │ │ │ │ │ └── pokemon_model.dart │ │ │ │ │ ├── domain │ │ │ │ │ ├── home_domain_inputs.dart │ │ │ │ │ ├── home_domain_models.dart │ │ │ │ │ ├── home_entity.dart │ │ │ │ │ └── home_use_case.dart │ │ │ │ │ └── presentation │ │ │ │ │ ├── home_presenter.dart │ │ │ │ │ ├── home_ui.dart │ │ │ │ │ └── home_view_model.dart │ │ │ ├── main.dart │ │ │ ├── providers.dart │ │ │ ├── providers │ │ │ │ ├── external_interface_providers.dart │ │ │ │ ├── gateway_providers.dart │ │ │ │ └── use_case_providers.dart │ │ │ ├── routing.dart │ │ │ └── routing │ │ │ │ ├── clean_framework_http_example_router.dart │ │ │ │ └── routes.dart │ │ ├── linux │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── generated_plugin_registrant.cc │ │ │ │ ├── generated_plugin_registrant.h │ │ │ │ └── generated_plugins.cmake │ │ │ ├── main.cc │ │ │ ├── my_application.cc │ │ │ └── my_application.h │ │ ├── macos │ │ │ ├── .gitignore │ │ │ ├── Podfile │ │ │ ├── Runner.xcodeproj │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── xcshareddata │ │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── Runner │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── app_icon_1024.png │ │ │ │ │ ├── app_icon_128.png │ │ │ │ │ ├── app_icon_16.png │ │ │ │ │ ├── app_icon_256.png │ │ │ │ │ ├── app_icon_32.png │ │ │ │ │ ├── app_icon_512.png │ │ │ │ │ └── app_icon_64.png │ │ │ │ ├── Base.lproj │ │ │ │ └── MainMenu.xib │ │ │ │ ├── Configs │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ ├── Debug.xcconfig │ │ │ │ ├── Release.xcconfig │ │ │ │ └── Warnings.xcconfig │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ ├── Info.plist │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ └── Release.entitlements │ │ ├── pubspec.yaml │ │ ├── test │ │ │ └── clean_framework_http_test.dart │ │ ├── web │ │ │ ├── favicon.png │ │ │ ├── icons │ │ │ │ ├── Icon-192.png │ │ │ │ ├── Icon-512.png │ │ │ │ ├── Icon-maskable-192.png │ │ │ │ └── Icon-maskable-512.png │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── windows │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter │ │ │ ├── CMakeLists.txt │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── resources │ │ │ └── app_icon.ico │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ ├── lib │ │ ├── clean_framework_http.dart │ │ └── src │ │ │ ├── http_cache_policy.dart │ │ │ ├── http_external_interface.dart │ │ │ ├── http_external_interface_delegate.dart │ │ │ ├── http_methods.dart │ │ │ ├── http_options.dart │ │ │ ├── requests.dart │ │ │ └── responses.dart │ ├── pubspec.yaml │ └── test │ │ └── clean_framework_http_test.dart ├── clean_framework_router │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── lib │ │ ├── clean_framework_router.dart │ │ ├── main.dart │ │ └── src │ │ │ ├── app_route.dart │ │ │ ├── app_router.dart │ │ │ ├── app_router_base.dart │ │ │ └── app_router_scope.dart │ ├── pubspec.yaml │ ├── test │ │ └── app_router_test.dart │ └── web │ │ ├── favicon.png │ │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ │ ├── index.html │ │ └── manifest.json └── clean_framework_test │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── lib │ ├── clean_framework_test.dart │ ├── clean_framework_test_legacy.dart │ └── src │ │ ├── diff.dart │ │ ├── gateway_fake.dart │ │ ├── presenter_test.dart │ │ ├── provider_tester.dart │ │ ├── test_helpers.dart │ │ ├── ui_test.dart │ │ ├── use_case_fake.dart │ │ ├── use_case_mock.dart │ │ └── use_case_test.dart │ ├── pubspec.yaml │ └── test │ └── clean_framework_test.dart └── pubspec.yaml /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "pub" 4 | directory: "/" 5 | schedule: 6 | interval: "monthly" 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/scripts/install-tools.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | flutter config --no-analytics 4 | flutter pub global activate melos 5 | echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH -------------------------------------------------------------------------------- /.github/workflows/web-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to Web 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - develop 8 | 9 | jobs: 10 | web-deploy: 11 | name: Web Deploy 12 | runs-on: macos-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v3 16 | 17 | - uses: subosito/flutter-action@v2 18 | with: 19 | channel: 'stable' 20 | cache: true 21 | 22 | - name: 'Install Tools' 23 | run: | 24 | ./.github/workflows/scripts/install-tools.sh 25 | 26 | - name: Get package dependencies 27 | run: melos bs 28 | 29 | - uses: sarbagyastha/flutter-gh-pages@main 30 | with: 31 | workingDir: packages/clean_framework/example 32 | -------------------------------------------------------------------------------- /.pubignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | build/ 3 | coverage/ -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### Contributing to Clean Framework 2 | Follow the steps below to set up a development environment: 3 | 4 | #### Project Setup 5 | - Install [Melos](https://pub.dev/packages/melos/install) 6 | - Run `melos bootstrap` to install dependencies and link packages -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:very_good_analysis/analysis_options.yaml 2 | 3 | linter: 4 | rules: 5 | one_member_abstracts: false 6 | only_throw_errors: false 7 | public_member_api_docs: false -------------------------------------------------------------------------------- /docs/assets/adapter_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/adapter_layer.png -------------------------------------------------------------------------------- /docs/assets/clean_architecture_layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/clean_architecture_layers.png -------------------------------------------------------------------------------- /docs/assets/counter-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/counter-page.png -------------------------------------------------------------------------------- /docs/assets/domain_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/domain_layer.png -------------------------------------------------------------------------------- /docs/assets/feature_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/feature_design.png -------------------------------------------------------------------------------- /docs/assets/icon_logomark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/icon_logomark.png -------------------------------------------------------------------------------- /docs/assets/icon_logomark_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/icon_logomark_dark.png -------------------------------------------------------------------------------- /docs/assets/interface_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/interface_layer.png -------------------------------------------------------------------------------- /docs/assets/login-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/login-page.png -------------------------------------------------------------------------------- /docs/assets/pokemon-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/pokemon-app.png -------------------------------------------------------------------------------- /docs/assets/ui_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/docs/assets/ui_layer.png -------------------------------------------------------------------------------- /images/clean-framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/images/clean-framework.png -------------------------------------------------------------------------------- /packages/clean_framework/example/README.md: -------------------------------------------------------------------------------- 1 | # Clean Framework example_rest 2 | 3 | An example application to demonstrate usage of clean_framework package with a REST api. -------------------------------------------------------------------------------- /packages/clean_framework/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/kotlin/com/acmesoftware/clean_framework_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.acmesoftware.clean_framework_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 6 | -------------------------------------------------------------------------------- /packages/clean_framework/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/clean_framework/example/assets/sad-flareon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/assets/sad-flareon.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/clean_framework/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/dependency_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:dio/dio.dart'; 3 | 4 | final restClientProvider = DependencyProvider( 5 | (_) => Dio(BaseOptions(baseUrl: 'https://pokeapi.co/api/v2/')), 6 | ); 7 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/pokemon/pokemon_failure_response.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | enum PokemonFailureType { 4 | serverError, 5 | unauthorized, 6 | notFound, 7 | unknown, 8 | } 9 | 10 | class PokemonFailureResponse extends TypedFailureResponse { 11 | const PokemonFailureResponse({ 12 | required super.type, 13 | super.errorData = const {}, 14 | super.message = '', 15 | }); 16 | 17 | @override 18 | String toString() { 19 | return 'PokemonFailureResponse' 20 | '{type: $type, errorData: $errorData, message: $message}'; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/pokemon/pokemon_request.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | abstract class PokemonRequest extends Request { 4 | Map get queryParams => {}; 5 | } 6 | 7 | abstract class GetPokemonRequest extends PokemonRequest { 8 | String get resource; 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/pokemon/pokemon_success_response.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | class PokemonSuccessResponse extends SuccessResponse { 4 | const PokemonSuccessResponse({required this.data}); 5 | 6 | final Map data; 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/validators/src/email_input_field_validator.dart: -------------------------------------------------------------------------------- 1 | import 'package:uniform/uniform.dart'; 2 | 3 | class EmailInputFieldValidator implements InputFieldValidator { 4 | const EmailInputFieldValidator(); 5 | 6 | @override 7 | InputFieldError resolve(String value) { 8 | final emailRegex = RegExp( 9 | r'^[a-zA-Z\d.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z\d-]+(\.[a-zA-Z\d-]{2,})+$', 10 | ); 11 | 12 | if (!emailRegex.hasMatch(value)) { 13 | return InputFieldError('Please input a valid email.'); 14 | } 15 | 16 | return InputFieldError.none(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/validators/src/password_input_field_validator.dart: -------------------------------------------------------------------------------- 1 | import 'package:uniform/uniform.dart'; 2 | 3 | class PasswordInputFieldValidator implements InputFieldValidator { 4 | const PasswordInputFieldValidator(); 5 | 6 | @override 7 | InputFieldError resolve(String value) { 8 | if (value.length < 8) { 9 | return InputFieldError('Password must be at least 8 characters.'); 10 | } 11 | 12 | return InputFieldError.none(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/core/validators/validators.dart: -------------------------------------------------------------------------------- 1 | export 'src/email_input_field_validator.dart'; 2 | export 'src/password_input_field_validator.dart'; 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/features/form/presentation/form_view_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:flutter/foundation.dart'; 3 | 4 | class FormViewModel extends ViewModel { 5 | const FormViewModel({ 6 | required this.formController, 7 | required this.onLogin, 8 | required this.isLoading, 9 | required this.requireGender, 10 | required this.isLoggedIn, 11 | }); 12 | 13 | final FormController formController; 14 | final bool isLoading; 15 | final bool isLoggedIn; 16 | final bool requireGender; 17 | 18 | final VoidCallback onLogin; 19 | 20 | @override 21 | List get props { 22 | return [formController, isLoading, isLoggedIn, requireGender]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/features/home/models/pokemon_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | 3 | @immutable 4 | class PokemonModel { 5 | const PokemonModel({ 6 | required this.name, 7 | required this.imageUrl, 8 | }); 9 | 10 | final String name; 11 | final String imageUrl; 12 | 13 | @override 14 | bool operator ==(Object other) => 15 | identical(this, other) || 16 | other is PokemonModel && 17 | runtimeType == other.runtimeType && 18 | name == other.name && 19 | imageUrl == other.imageUrl; 20 | 21 | @override 22 | int get hashCode => name.hashCode ^ imageUrl.hashCode; 23 | } 24 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/features/profile/domain/profile_domain_inputs.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework_example_rest/features/profile/models/pokemon_profile_model.dart'; 3 | import 'package:clean_framework_example_rest/features/profile/models/pokemon_species_model.dart'; 4 | 5 | class PokemonProfileSuccessInput extends SuccessDomainInput { 6 | PokemonProfileSuccessInput({required this.profile}); 7 | 8 | final PokemonProfileModel profile; 9 | } 10 | 11 | class PokemonSpeciesSuccessDomainInput extends SuccessDomainInput { 12 | PokemonSpeciesSuccessDomainInput({required this.species}); 13 | 14 | final PokemonSpeciesModel species; 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_example_rest/app/poke_app.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | void main() { 5 | runApp(const PokeApp()); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/providers.dart: -------------------------------------------------------------------------------- 1 | export 'providers/external_interface_providers.dart'; 2 | export 'providers/gateway_providers.dart'; 3 | export 'providers/use_case_providers.dart'; 4 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/providers/external_interface_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework_example_rest/core/pokemon/pokemon_external_interface.dart'; 3 | import 'package:clean_framework_example_rest/providers/gateway_providers.dart'; 4 | 5 | final pokemonExternalInterfaceProvider = ExternalInterfaceProvider( 6 | PokemonExternalInterface.new, 7 | gateways: [ 8 | pokemonCollectionGateway, 9 | pokemonProfileGateway, 10 | pokemonSpeciesGateway, 11 | ], 12 | ); 13 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/routing.dart: -------------------------------------------------------------------------------- 1 | export 'package:clean_framework_example_rest/routing/poke_router.dart'; 2 | export 'package:clean_framework_example_rest/routing/routes.dart'; 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/routing/routes.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_router/clean_framework_router.dart'; 2 | 3 | enum Routes with RoutesMixin { 4 | home('/'), 5 | profile(':pokemon_name'), 6 | form('form'); 7 | 8 | const Routes(this.path); 9 | 10 | @override 11 | final String path; 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework/example/lib/widgets/fields.dart: -------------------------------------------------------------------------------- 1 | export 'fields/checkbox_input_field.dart'; 2 | export 'fields/dropdown_input_field.dart'; 3 | export 'fields/form_button.dart'; 4 | export 'fields/text_input_field.dart'; 5 | -------------------------------------------------------------------------------- /packages/clean_framework/example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /packages/clean_framework/example/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/example/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework/example/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/example/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = Clean Framework Example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.acmesoftware.cleanFrameworkExample 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2022 com.acmesoftware. All rights reserved. 15 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | com.apple.security.network.client 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.network.client 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/clean_framework/example/snap/gui/app_icon.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Flutter Linux App 3 | Comment=Flutter Linux launcher icon 4 | Exec=app_icon 5 | Icon=app_icon.png 6 | Terminal=false 7 | Type=Application 8 | Categories=Entertainment; 9 | -------------------------------------------------------------------------------- /packages/clean_framework/example/snap/gui/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/snap/gui/app_icon.png -------------------------------------------------------------------------------- /packages/clean_framework/example/web/CNAME: -------------------------------------------------------------------------------- 1 | cleanframeworkdemo.acmesoftware.com -------------------------------------------------------------------------------- /packages/clean_framework/example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/web/favicon.png -------------------------------------------------------------------------------- /packages/clean_framework/example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/clean_framework/example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/clean_framework/example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/clean_framework/example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /packages/clean_framework/example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /packages/clean_framework/example/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/example/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework/example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /packages/clean_framework/example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /packages/clean_framework/lib/clean_framework_defaults.dart: -------------------------------------------------------------------------------- 1 | /// Clean Framework Defaults 2 | library clean_framework_defaults; 3 | 4 | export 'package:clean_framework/src/defaults/feature_provider/json_feature_provider.dart'; 5 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/clean_framework_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 2 | 3 | abstract class CleanFrameworkProvider

> { 4 | CleanFrameworkProvider({required P provider}) : _provider = provider; 5 | 6 | final P _provider; 7 | 8 | P call() => _provider; 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/core.dart: -------------------------------------------------------------------------------- 1 | export 'app_provider_scope.dart'; 2 | export 'dependency/dependency_provider.dart'; 3 | export 'external_interface/external_interface.dart'; 4 | export 'external_interface/external_interface_provider.dart'; 5 | export 'external_interface/request.dart'; 6 | export 'external_interface/response.dart'; 7 | export 'gateway/gateway.dart'; 8 | export 'gateway/gateway_provider.dart'; 9 | export 'use_case/entity.dart'; 10 | export 'use_case/provider/use_case_provider.dart'; 11 | export 'use_case/use_case.dart'; 12 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/external_interface/external_interface_delegate.dart: -------------------------------------------------------------------------------- 1 | part of 'external_interface.dart'; 2 | 3 | abstract class ExternalInterfaceDelegate { 4 | ExternalInterface? _externalInterface; 5 | 6 | @nonVirtual 7 | // ignore: use_setters_to_change_properties 8 | void attachTo(ExternalInterface externalInterface) { 9 | _externalInterface = externalInterface; 10 | } 11 | 12 | /// Locates dependency from the [provider]. 13 | 14 | @nonVirtual 15 | T locate(DependencyProvider provider) { 16 | final ref = _externalInterface?._ref; 17 | assert(ref != null, '$runtimeType has not been attached!'); 18 | return ref!.read(provider); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/external_interface/request.dart: -------------------------------------------------------------------------------- 1 | import 'package:meta/meta.dart'; 2 | 3 | @immutable 4 | abstract class Request { 5 | const Request(); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/use_case/entity.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// Represents the current state of the domain layer (use case). 5 | @immutable 6 | abstract class Entity extends Equatable { 7 | const Entity(); 8 | 9 | @override 10 | bool get stringify => true; 11 | 12 | @useResult 13 | Entity copyWith() => throw UnimplementedError('copyWith() not implemented'); 14 | } 15 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/use_case/helpers/domain_dto.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// Base class for Data Transfer Objects (DTOs) that move data into or out of the domain layer/use case. 5 | @immutable 6 | abstract class DomainDTO extends Equatable { 7 | const DomainDTO(); 8 | } 9 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/use_case/helpers/domain_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/core/use_case/helpers/domain_dto.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | /// Represents the state of the domain (or part of the domain) at a particular 5 | /// point in time. Used for the transfer of data from the domain layer to 6 | /// other layers. 7 | @immutable 8 | abstract class DomainModel extends DomainDTO { 9 | const DomainModel(); 10 | 11 | @override 12 | bool get stringify => true; 13 | } 14 | 15 | @Deprecated('Use DomainModel instead.') 16 | abstract class Output extends DomainModel { 17 | @Deprecated('Use DomainModel instead.') 18 | const Output() : super(); 19 | } 20 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/core/use_case/use_case_helpers.dart: -------------------------------------------------------------------------------- 1 | export 'helpers/domain_input.dart'; 2 | export 'helpers/domain_model.dart'; 3 | export 'helpers/request_subscription_map.dart'; 4 | export 'helpers/use_case_transformer.dart'; 5 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/defaults/feature_provider/engine/evaluation_engine.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/defaults/feature_provider/engine/open_feature_flags.dart'; 2 | import 'package:clean_framework/src/open_feature/open_feature.dart'; 3 | 4 | abstract class EvaluationEngine { 5 | ResolutionDetails evaluate({ 6 | required OpenFeatureFlags flags, 7 | required String flagKey, 8 | required FlagValueType returnType, 9 | required EvaluationContext context, 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/enums.dart: -------------------------------------------------------------------------------- 1 | export 'enums/error_code.dart'; 2 | export 'enums/flag_value_type.dart'; 3 | export 'enums/reason.dart'; 4 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/enums/flag_value_type.dart: -------------------------------------------------------------------------------- 1 | /// The value type of a flag. 2 | enum FlagValueType { 3 | /// Boolean Value. 4 | boolean, 5 | 6 | /// String Value. 7 | string, 8 | 9 | /// Numeric Value. 10 | number, 11 | 12 | /// Object Value. 13 | object, 14 | } 15 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/enums/reason.dart: -------------------------------------------------------------------------------- 1 | enum Reason { 2 | disabled, 3 | split, 4 | targetingMatch, 5 | unknown, 6 | error, 7 | noop, 8 | } 9 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/feature_client.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/open_feature/src/core/features.dart'; 2 | import 'package:clean_framework/src/open_feature/src/core/flag_evaluation_lifecycle.dart'; 3 | 4 | abstract class FeatureClient extends Features 5 | implements FlagEvaluationLifecycle {} 6 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/flag_evaluation_lifecycle.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/open_feature/src/hook/hook.dart'; 2 | 3 | abstract class FlagEvaluationLifecycle { 4 | List get hooks; 5 | 6 | void addHooks(List hooks); 7 | 8 | void clearHooks(); 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/core/resolution_details.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/open_feature/src/core/enums.dart'; 2 | 3 | class ResolutionDetails { 4 | ResolutionDetails({ 5 | required this.value, 6 | this.errorCode, 7 | this.reason, 8 | this.variant, 9 | }); 10 | 11 | final T value; 12 | final ErrorCode? errorCode; 13 | final Reason? reason; 14 | final String? variant; 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/evaluation_context/context_transformation_mixin.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:clean_framework/src/open_feature/src/evaluation_context/evaluation_context.dart'; 4 | import 'package:clean_framework/src/open_feature/src/provider/feature_provider.dart'; 5 | 6 | mixin ContextTransformationMixin on FeatureProvider { 7 | FutureOr transformContext(EvaluationContext context); 8 | } 9 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/exceptions/open_feature_exception.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | 3 | import 'package:clean_framework/src/open_feature/src/core/enums/error_code.dart'; 4 | 5 | export '../core/enums/error_code.dart'; 6 | export 'src/flag_not_found_exception.dart'; 7 | export 'src/parse_exception.dart'; 8 | export 'src/type_mismatch_exception.dart'; 9 | 10 | abstract class OpenFeatureException implements Exception { 11 | OpenFeatureException(this.message, {required this.code}); 12 | 13 | final String message; 14 | final ErrorCode code; 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/exceptions/src/flag_not_found_exception.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | 3 | import 'package:clean_framework/src/open_feature/src/exceptions/open_feature_exception.dart'; 4 | 5 | class FlagNotFoundException extends OpenFeatureException { 6 | FlagNotFoundException(super.message) : super(code: ErrorCode.flagNotFound); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/exceptions/src/parse_exception.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | 3 | import 'package:clean_framework/src/open_feature/src/exceptions/open_feature_exception.dart'; 4 | 5 | class ParseException extends OpenFeatureException { 6 | ParseException(super.message) : super(code: ErrorCode.flagNotFound); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/exceptions/src/type_mismatch_exception.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | 3 | import 'package:clean_framework/src/open_feature/src/exceptions/open_feature_exception.dart'; 4 | 5 | class TypeMismatchException extends OpenFeatureException { 6 | TypeMismatchException(super.message) : super(code: ErrorCode.typeMismatch); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/flag_evaluation/flag_evaluation_details.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/open_feature/src/core/enums.dart'; 2 | 3 | class FlagEvaluationDetails { 4 | FlagEvaluationDetails({ 5 | required this.key, 6 | required this.value, 7 | this.errorCode, 8 | this.reason, 9 | this.variant, 10 | }); 11 | 12 | final String key; 13 | final T value; 14 | final ErrorCode? errorCode; 15 | final Reason? reason; 16 | final String? variant; 17 | } 18 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/flag_evaluation/flag_evaluation_options.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/src/open_feature/src/hook/hook.dart'; 2 | 3 | class FlagEvaluationOptions { 4 | const FlagEvaluationOptions({ 5 | this.hooks = const [], 6 | this.hookHints, 7 | }); 8 | 9 | final List hooks; 10 | final HookHints? hookHints; 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/open_feature/src/hook/hook_hints.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | 3 | import 'dart:collection'; 4 | 5 | class HookHints extends UnmodifiableMapBase { 6 | HookHints(this._map); 7 | 8 | final Map _map; 9 | 10 | @override 11 | Iterable get keys => _map.keys; 12 | 13 | @override 14 | T? operator [](Object? key) => _map[key]; 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/presentation/presentation.dart: -------------------------------------------------------------------------------- 1 | export 'presenter/presenter.dart'; 2 | export 'presenter/view_model.dart'; 3 | export 'ui/ui.dart'; 4 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/presentation/presenter/view_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:flutter/foundation.dart'; 3 | 4 | @immutable 5 | abstract class ViewModel extends Equatable { 6 | const ViewModel(); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/providers/bridge_gateway_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework/src/providers/gateway.dart'; 3 | import 'package:clean_framework/src/providers/overridable_provider.dart'; 4 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 5 | 6 | class BridgeGatewayProvider 7 | implements OverridableProvider { 8 | BridgeGatewayProvider(this.create) : _provider = Provider(create); 9 | final Provider _provider; 10 | final G Function(Ref) create; 11 | 12 | @override 13 | Override overrideWith(G gateway) => _provider.overrideWithValue(gateway); 14 | 15 | G getBridgeGateway(ProvidersContext context) => context().read(_provider); 16 | } 17 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/providers/external_interface_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | import 'package:clean_framework/src/providers/overridable_provider.dart'; 3 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 4 | 5 | class ExternalInterfaceProvider 6 | implements OverridableProvider { 7 | ExternalInterfaceProvider(this.create) : _provider = Provider(create); 8 | final Provider _provider; 9 | final I Function(Ref) create; 10 | 11 | @override 12 | Override overrideWith(I interface) => _provider.overrideWithValue(interface); 13 | 14 | I getExternalInterface(ProvidersContext context) => context().read(_provider); 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/providers/gateway_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | import 'package:clean_framework/src/providers/overridable_provider.dart'; 3 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 4 | 5 | class GatewayProvider implements OverridableProvider { 6 | GatewayProvider(this.create) : _provider = Provider(create); 7 | final Provider _provider; 8 | final G Function(Ref) create; 9 | 10 | @override 11 | Override overrideWith(G gateway) => _provider.overrideWithValue(gateway); 12 | 13 | G getGateway(ProvidersContext context) => context().read(_provider); 14 | } 15 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/providers/overridable_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 2 | import 'package:meta/meta.dart'; 3 | 4 | abstract class OverridableProvider { 5 | @visibleForTesting 6 | Override overrideWith(V value); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework/lib/src/widgets/widgets.dart: -------------------------------------------------------------------------------- 1 | export 'src/feature_builder.dart'; 2 | export 'src/feature_scope.dart'; 3 | -------------------------------------------------------------------------------- /packages/clean_framework/screenshots/clean-framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/screenshots/clean-framework.png -------------------------------------------------------------------------------- /packages/clean_framework/test/providers/entity_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | test('Entity test', () { 6 | final entity = EntityFake(); 7 | expect(entity.stringify, isTrue); 8 | expect(entity.toString(), 'EntityFake()'); 9 | }); 10 | } 11 | 12 | class EntityFake extends Entity { 13 | @override 14 | List get props => []; 15 | 16 | @override 17 | EntityFake copyWith() => EntityFake(); 18 | } 19 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/README.md: -------------------------------------------------------------------------------- 1 | # Clean Framework theme_example 2 | 3 | An example application to demonstrate the modification of the theme mode for a clean_framework app. -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/kotlin/com/example/theme_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.theme_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | } 19 | 20 | rootProject.buildDir = '../build' 21 | subprojects { 22 | project.buildDir = "${rootProject.buildDir}/${project.name}" 23 | } 24 | subprojects { 25 | project.evaluationDependsOn(':app') 26 | } 27 | 28 | tasks.register("clean", Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/features/home/domain/home_domain_models.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:theme_example/features/home/domain/home_entity.dart'; 3 | 4 | class HomeDomainToUIModel extends DomainModel { 5 | const HomeDomainToUIModel({ 6 | required this.appTheme, 7 | }); 8 | 9 | final AppTheme appTheme; 10 | 11 | @override 12 | List get props => [ 13 | appTheme, 14 | ]; 15 | } 16 | 17 | class HomeThemeDomainToUIModel extends DomainModel { 18 | const HomeThemeDomainToUIModel({ 19 | required this.appTheme, 20 | }); 21 | 22 | final AppTheme appTheme; 23 | 24 | @override 25 | List get props => [ 26 | appTheme, 27 | ]; 28 | } 29 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/features/home/presentation/home_view_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:theme_example/features/home/domain/home_entity.dart'; 4 | 5 | class HomeViewModel extends ViewModel { 6 | const HomeViewModel({ 7 | required this.appTheme, 8 | required this.onThemeChange, 9 | }); 10 | 11 | final AppTheme appTheme; 12 | 13 | final ValueChanged onThemeChange; 14 | 15 | @override 16 | List get props => [ 17 | appTheme, 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/features/home/presentation/theme/home_theme_view_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:theme_example/features/home/domain/home_entity.dart'; 3 | 4 | class HomeThemeViewModel extends ViewModel { 5 | const HomeThemeViewModel({ 6 | required this.appTheme, 7 | }); 8 | 9 | final AppTheme appTheme; 10 | 11 | @override 12 | List get props => [ 13 | appTheme, 14 | ]; 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:theme_example/app/theme_example_app.dart'; 3 | 4 | void main() { 5 | runApp(const ThemeExampleApp()); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/providers.dart: -------------------------------------------------------------------------------- 1 | export 'providers/use_case_providers.dart'; 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/providers/use_case_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:theme_example/features/home/domain/home_use_case.dart'; 3 | 4 | final homeUseCaseProvider = UseCaseProvider( 5 | HomeUseCase.new, 6 | ); 7 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/lib/router.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_router/clean_framework_router.dart'; 2 | import 'package:theme_example/features/home/presentation/home_ui.dart'; 3 | 4 | class ExampleRouter extends AppRouter { 5 | @override 6 | RouterConfiguration configureRouter() { 7 | return RouterConfiguration( 8 | debugLogDiagnostics: true, 9 | routes: [ 10 | AppRoute( 11 | route: Routes.home, 12 | builder: (_, __) => HomeUI(), 13 | ), 14 | ], 15 | ); 16 | } 17 | } 18 | 19 | enum Routes with RoutesMixin { 20 | home('/'); 21 | 22 | const Routes(this.path); 23 | 24 | @override 25 | final String path; 26 | } 27 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = theme_example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.themeExample 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/web/favicon.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /packages/clean_framework/theme_example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework/theme_example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /packages/clean_framework_firestore/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | ## 0.5.3 3 | **Feb 10, 2024** 4 | - Fix bug causing `FirebaseDeleteRequest`s to fail. 5 | 6 | ## 0.5.2 7 | **Feb 7, 2024** 8 | - Upgrade package to use newest clean_framework classes. 9 | 10 | ## 0.5.2-dev.0 11 | **Jan 29, 2024** 12 | - Bump dependencies to latest versions. 13 | 14 | ## 0.5.1 15 | **Aug 7, 2023** 16 | - Bumps dependencies to their latest version. 17 | 18 | ## 0.5.0 19 | **Jun 13, 2023** 20 | - Bumps dependencies to their latest version. 21 | 22 | ## 0.4.0 23 | **Jan 24, 2023** 24 | - Bumps dependencies to their latest version. 25 | 26 | ## 0.2.0-dev.0 27 | **Nov 1, 2022** 28 | - Upgrads to `clean_framework: ^2.0.0-dev.0`. 29 | 30 | ## 0.1.0 31 | **Nov 1, 2022** 32 | - Initial Release 33 | 34 | -------------------------------------------------------------------------------- /packages/clean_framework_firestore/README.md: -------------------------------------------------------------------------------- 1 | # Clean Framework Firestore 2 | 3 | [![Coverage](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework/branch/main/graph/badge.svg)](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework) 4 | 5 | Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. 6 | 7 | Go to [the documentation](https://docs.page/AcmeSoftwareLLC/clean_framework). -------------------------------------------------------------------------------- /packages/clean_framework_firestore/lib/clean_framework_firestore.dart: -------------------------------------------------------------------------------- 1 | export 'src/firebase_client.dart'; 2 | export 'src/firebase_client_fake.dart'; 3 | export 'src/firebase_external_interface.dart'; 4 | export 'src/firebase_gateway.dart'; 5 | export 'src/firebase_requests.dart'; 6 | export 'src/firebase_responses.dart'; 7 | export 'src/firebase_watcher_gateway.dart'; 8 | -------------------------------------------------------------------------------- /packages/clean_framework_firestore/lib/src/firebase_gateway.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | import 'package:clean_framework_firestore/src/firebase_requests.dart'; 4 | import 'package:clean_framework_firestore/src/firebase_responses.dart'; 5 | 6 | abstract class FirebaseGateway 8 | extends Gateway { 9 | @override 10 | FailureDomainInput onFailure(FailureResponse failureResponse) { 11 | return FailureDomainInput(message: failureResponse.message); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework_firestore/lib/src/firebase_responses.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | class FirebaseSuccessResponse extends SuccessResponse { 4 | const FirebaseSuccessResponse(this.json); 5 | final Map json; 6 | 7 | @override 8 | List get props => [json]; 9 | } 10 | 11 | class FirebaseFailureResponse 12 | extends TypedFailureResponse { 13 | const FirebaseFailureResponse({ 14 | required super.type, 15 | super.message, 16 | super.errorData, 17 | }); 18 | } 19 | 20 | enum FirebaseFailureType { noContent } 21 | -------------------------------------------------------------------------------- /packages/clean_framework_firestore/lib/src/firebase_watcher_gateway.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | 3 | import 'package:clean_framework_firestore/src/firebase_requests.dart'; 4 | import 'package:clean_framework_firestore/src/firebase_responses.dart'; 5 | 6 | abstract class FirebaseWatcherGateway< 7 | M extends DomainModel, 8 | R extends FirebaseRequest, 9 | P extends FirebaseSuccessResponse, 10 | S extends SuccessDomainInput> extends WatcherGateway { 11 | FirebaseWatcherGateway({ 12 | required super.context, 13 | required super.provider, 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework_firestore/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_firestore 2 | description: A wrapper around cloud_firestore to make it easier to use with clean_framework. 3 | version: 0.5.3 4 | homepage: https://acmesoftware.com/ 5 | repository: https://github.com/AcmeSoftwareLLC/clean_framework/packages/clean_framework_firestore 6 | 7 | environment: 8 | sdk: '>=3.0.0 <4.0.0' 9 | flutter: '>=3.0.0' 10 | 11 | dependencies: 12 | clean_framework: ^4.0.0 13 | 14 | cloud_firestore: ^4.8.4 15 | equatable: ^2.0.5 16 | flutter: 17 | sdk: flutter 18 | 19 | dev_dependencies: 20 | clean_framework_test: ^0.5.3 21 | 22 | flutter_test: 23 | sdk: flutter 24 | mocktail: ^1.0.0 25 | very_good_analysis: ^5.0.0+1 26 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | ## 0.4.3 3 | **Feb 7, 2024** 4 | - Publish patch version for newest Clean Framework changes. 5 | 6 | ## 0.4.3-dev.0 7 | **Jan 29, 2024** 8 | - Bump dependencies to latest versions. 9 | 10 | ## 0.4.2 11 | **Aug 7, 2023** 12 | - Bumps dependencies to latest version. 13 | 14 | ## 0.4.1 15 | **Jun 8, 2023** 16 | - Bumps dependencies to latest version. 17 | 18 | ## 0.4.0 19 | **Jan 24, 2023** 20 | - Bumped dependencies to their latest version. 21 | 22 | ## 0.2.0-dev.0 23 | **Nov 1, 2022** 24 | - Upgraded to `clean_framework: ^2.0.0-dev.0`. 25 | 26 | ## 0.1.0 27 | **Nov 1, 2022** 28 | - Initial Release -------------------------------------------------------------------------------- /packages/clean_framework_graphql/README.md: -------------------------------------------------------------------------------- 1 | # Clean Framework GraphQL 2 | 3 | [![Coverage](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework/branch/main/graph/badge.svg)](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework) 4 | 5 | Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. 6 | 7 | Go to [the documentation](https://docs.page/AcmeSoftwareLLC/clean_framework). -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/README.md: -------------------------------------------------------------------------------- 1 | # cf_example 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/kotlin/com/example/cf_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.cf_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | mavenCentral() 17 | } 18 | } 19 | 20 | rootProject.buildDir = '../build' 21 | subprojects { 22 | project.buildDir = "${rootProject.buildDir}/${project.name}" 23 | } 24 | subprojects { 25 | project.evaluationDependsOn(':app') 26 | } 27 | 28 | tasks.register("clean", Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/lib/features/home/domain/home_domain_inputs.dart: -------------------------------------------------------------------------------- 1 | import 'package:graphql_example/features/home/models/pokemon_model.dart'; 2 | import 'package:clean_framework/clean_framework.dart'; 3 | 4 | class HomeTestSuccessDomainInput extends SuccessDomainInput { 5 | HomeTestSuccessDomainInput({ 6 | required this.pokemonModel, 7 | }); 8 | 9 | final PokemonModel pokemonModel; 10 | } 11 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:graphql_example/app/example_app.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | void main() { 5 | runApp(const ExampleApp()); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/lib/router.dart: -------------------------------------------------------------------------------- 1 | import 'package:graphql_example/features/home/presentation/home_ui.dart'; 2 | import 'package:clean_framework_router/clean_framework_router.dart'; 3 | 4 | class ExampleRouter extends AppRouter { 5 | @override 6 | RouterConfiguration configureRouter() { 7 | return RouterConfiguration( 8 | debugLogDiagnostics: true, 9 | routes: [ 10 | AppRoute( 11 | route: Routes.home, 12 | builder: (_, __) => HomeUI(), 13 | ), 14 | ], 15 | ); 16 | } 17 | } 18 | 19 | enum Routes with RoutesMixin { 20 | home('/'); 21 | 22 | const Routes(this.path); 23 | 24 | @override 25 | final String path; 26 | } 27 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = cf_example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.cfExample 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/test/home_test.dart: -------------------------------------------------------------------------------- 1 | void main() {} 2 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/web/favicon.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/graphql_example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_graphql/graphql_example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/clean_framework_graphql.dart: -------------------------------------------------------------------------------- 1 | export 'src/graphql_error_policy.dart'; 2 | export 'src/graphql_external_interface.dart'; 3 | export 'src/graphql_fetch_policy.dart'; 4 | export 'src/graphql_gateway.dart'; 5 | export 'src/graphql_logger.dart'; 6 | export 'src/graphql_method.dart'; 7 | export 'src/graphql_requests.dart'; 8 | export 'src/graphql_responses.dart'; 9 | export 'src/graphql_service.dart'; 10 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_error_policy.dart: -------------------------------------------------------------------------------- 1 | enum GraphQLErrorPolicy { 2 | /// Any GraphQL Errors are treated the same as network errors 3 | /// and any data is ignored from the response. (default) 4 | none, 5 | 6 | /// Ignore allows you to read any data that is returned alongside 7 | /// GraphQL Errors, but doesn't save the errors or report them to your UI. 8 | ignore, 9 | 10 | /// Saves both data and errors into the `cache` so your UI can use them. 11 | /// 12 | /// It is recommended for notifying your users of potential issues, 13 | /// while still showing as much data as possible from your server. 14 | all, 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_fetch_policy.dart: -------------------------------------------------------------------------------- 1 | enum GraphQLFetchPolicy { 2 | /// Return result from cache. 3 | /// Only fetch from network if cached result is not available. 4 | cacheFirst, 5 | 6 | /// Return result from cache first (if it exists), 7 | /// then return network result once it's available. 8 | cacheAndNetwork, 9 | 10 | /// Return result from cache if available, fail otherwise. 11 | cacheOnly, 12 | 13 | /// Return result from network, fail if network call doesn't succeed, 14 | /// don't save to cache. 15 | noCache, 16 | 17 | /// Return result from network, fail if network call doesn't succeed, 18 | /// save to cache. 19 | networkOnly, 20 | } 21 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_gateway.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | 3 | import 'package:clean_framework_graphql/src/graphql_requests.dart'; 4 | import 'package:clean_framework_graphql/src/graphql_responses.dart'; 5 | 6 | abstract class GraphQLGateway 8 | extends Gateway { 9 | GraphQLGateway({ 10 | super.context, 11 | super.provider, 12 | super.useCase, 13 | }); 14 | 15 | @override 16 | FailureDomainInput onFailure(GraphQLFailureResponse failureResponse) { 17 | return FailureDomainInput(message: failureResponse.message); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_method.dart: -------------------------------------------------------------------------------- 1 | /// The types of GraphQL operations. 2 | enum GraphQLMethod { 3 | /// Query 4 | query, 5 | 6 | /// Mutation 7 | mutation, 8 | } 9 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_requests.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | import 'package:clean_framework_graphql/src/graphql_error_policy.dart'; 3 | import 'package:clean_framework_graphql/src/graphql_fetch_policy.dart'; 4 | 5 | abstract class GraphQLRequest extends Request { 6 | String get document; 7 | 8 | Map? get variables => null; 9 | 10 | Duration? get timeout => null; 11 | 12 | GraphQLFetchPolicy? get fetchPolicy => null; 13 | 14 | GraphQLErrorPolicy? get errorPolicy => null; 15 | } 16 | 17 | abstract class QueryGraphQLRequest extends GraphQLRequest {} 18 | 19 | abstract class MutationGraphQLRequest extends GraphQLRequest {} 20 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/lib/src/graphql_responses.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework_legacy.dart'; 2 | import 'package:clean_framework_graphql/src/graphql_service.dart'; 3 | 4 | class GraphQLSuccessResponse extends SuccessResponse { 5 | const GraphQLSuccessResponse({ 6 | required this.data, 7 | this.errors = const [], 8 | }); 9 | 10 | final Map data; 11 | final Iterable errors; 12 | } 13 | 14 | class GraphQLFailureResponse extends TypedFailureResponse { 15 | const GraphQLFailureResponse({ 16 | required super.type, 17 | super.message, 18 | super.errorData, 19 | }); 20 | } 21 | 22 | enum GraphQLFailureType { operation, network, server, timeout } 23 | -------------------------------------------------------------------------------- /packages/clean_framework_graphql/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_graphql 2 | description: A wrapper around graphql to make it easier to use with clean_framework. 3 | version: 0.4.3 4 | homepage: https://acmesoftware.com/ 5 | repository: https://github.com/AcmeSoftwareLLC/clean_framework/packages/clean_framework_graphql 6 | 7 | environment: 8 | sdk: '>=2.17.0 <4.0.0' 9 | flutter: '>=3.0.0' 10 | 11 | dependencies: 12 | clean_framework: ^4.0.0 13 | 14 | flutter: 15 | sdk: flutter 16 | gql: ^1.0.0 17 | graphql: ^5.1.3 18 | 19 | dev_dependencies: 20 | clean_framework_test: ^0.5.3 21 | 22 | flutter_test: 23 | sdk: flutter 24 | mocktail: ^1.0.0 25 | very_good_analysis: ^5.0.0+1 26 | -------------------------------------------------------------------------------- /packages/clean_framework_http/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /packages/clean_framework_http/README.md: -------------------------------------------------------------------------------- 1 |

2 | Clean Framework 3 |

4 | 5 |

6 | Clean Framework Dio 7 |

8 | 9 | [![Coverage](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework/branch/main/graph/badge.svg)](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework) 10 | 11 | Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. 12 | 13 | Go to [the documentation](https://docs.page/AcmeSoftwareLLC/clean_framework). -------------------------------------------------------------------------------- /packages/clean_framework_http/example/README.md: -------------------------------------------------------------------------------- 1 | # clean_framework_http_example 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/kotlin/com/acmesoftware/clean_framework_http_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.acmesoftware.clean_framework_http_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/clean_framework_http/example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/features/home/domain/home_domain_inputs.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | import 'package:clean_framework_http_example/features/home/adapter/pokemon_model.dart'; 4 | 5 | class PokemonSuccessInput extends SuccessDomainInput { 6 | const PokemonSuccessInput({required this.pokemons}); 7 | 8 | final List pokemons; 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/features/home/domain/home_entity.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | class HomeEntity extends Entity { 4 | const HomeEntity({this.pokemons = const []}); 5 | 6 | final List pokemons; 7 | 8 | @override 9 | List get props => [pokemons]; 10 | 11 | @override 12 | HomeEntity copyWith({List? pokemons}) { 13 | return HomeEntity(pokemons: pokemons ?? this.pokemons); 14 | } 15 | } 16 | 17 | class PokemonEntity { 18 | PokemonEntity({ 19 | required this.name, 20 | required this.id, 21 | }); 22 | 23 | final String name; 24 | final String id; 25 | } 26 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/features/home/presentation/home_view_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | 3 | class HomeViewModel extends ViewModel { 4 | const HomeViewModel({required this.pokemons}); 5 | 6 | final List pokemons; 7 | 8 | @override 9 | List get props => [pokemons]; 10 | } 11 | 12 | class PokemonViewModel extends ViewModel { 13 | const PokemonViewModel({required this.name, required this.imageUrl}); 14 | 15 | final String name; 16 | final String imageUrl; 17 | 18 | @override 19 | List get props => [name, imageUrl]; 20 | } 21 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_http_example/app/clean_framework_http_example_app.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:shared_preferences/shared_preferences.dart'; 4 | 5 | Future main() async { 6 | WidgetsFlutterBinding.ensureInitialized(); 7 | 8 | final prefs = await SharedPreferences.getInstance(); 9 | await prefs.setString('BASE_URL', 'https://pokeapi.co/api/v2'); 10 | 11 | runApp(const CleanFrameworkHttpExampleApp()); 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/providers.dart: -------------------------------------------------------------------------------- 1 | export 'package:clean_framework_http_example/providers/external_interface_providers.dart'; 2 | export 'package:clean_framework_http_example/providers/gateway_providers.dart'; 3 | export 'package:clean_framework_http_example/providers/use_case_providers.dart'; 4 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/providers/external_interface_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework_http_example/core/external_interface/pokemon_external_interface.dart'; 3 | import 'package:clean_framework_http_example/providers/gateway_providers.dart'; 4 | 5 | final pokemonExternalInterfaceProvider = ExternalInterfaceProvider( 6 | PokemonExternalInterface.new, 7 | gateways: [pokemonGatewayProvider], 8 | ); 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/providers/gateway_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework_http_example/features/home/adapter/pokemon_gateway.dart'; 3 | import 'package:clean_framework_http_example/providers.dart'; 4 | 5 | final pokemonGatewayProvider = GatewayProvider( 6 | PokemonGateway.new, 7 | useCases: [homeUseCaseProvider], 8 | ); 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/providers/use_case_providers.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:clean_framework_http_example/features/home/domain/home_use_case.dart'; 3 | 4 | final homeUseCaseProvider = UseCaseProvider(HomeUseCase.new); 5 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/routing.dart: -------------------------------------------------------------------------------- 1 | export 'package:clean_framework_http_example/routing/clean_framework_http_example_router.dart'; 2 | export 'package:clean_framework_http_example/routing/routes.dart'; 3 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/routing/clean_framework_http_example_router.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_http_example/features/home/presentation/home_ui.dart'; 2 | import 'package:clean_framework_http_example/routing/routes.dart'; 3 | import 'package:clean_framework_router/clean_framework_router.dart'; 4 | 5 | class CleanFrameworkHttpExampleRouter extends AppRouter { 6 | @override 7 | RouterConfiguration configureRouter() { 8 | return RouterConfiguration( 9 | routes: [ 10 | AppRoute( 11 | route: Routes.home, 12 | builder: (_, __) => HomeUI(), 13 | ), 14 | ], 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/lib/routing/routes.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework_router/clean_framework_router.dart'; 2 | 3 | enum Routes with RoutesMixin { 4 | home('/'); 5 | 6 | const Routes(this.path); 7 | 8 | @override 9 | final String path; 10 | } 11 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | #include 10 | 11 | void fl_register_plugins(FlPluginRegistry* registry) { 12 | g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = 13 | fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); 14 | url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @NSApplicationMain 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = clean_framework_http_example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.acmesoftware.cleanFrameworkHttpExample 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2023 com.acmesoftware. All rights reserved. 15 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController.init() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/test/clean_framework_http_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | void main() { 4 | test('clean_framework_http', () { 5 | expect(1, 1); 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/web/favicon.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /packages/clean_framework_http/example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | #include 10 | 11 | void RegisterPlugins(flutter::PluginRegistry* registry) { 12 | UrlLauncherWindowsRegisterWithRegistrar( 13 | registry->GetRegistrarForPlugin("UrlLauncherWindows")); 14 | } 15 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /packages/clean_framework_http/example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_http/example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /packages/clean_framework_http/lib/clean_framework_http.dart: -------------------------------------------------------------------------------- 1 | export 'src/http_cache_policy.dart'; 2 | export 'src/http_external_interface.dart'; 3 | export 'src/http_external_interface_delegate.dart'; 4 | export 'src/http_methods.dart'; 5 | export 'src/http_options.dart'; 6 | export 'src/requests.dart'; 7 | export 'src/responses.dart'; 8 | -------------------------------------------------------------------------------- /packages/clean_framework_http/lib/src/http_methods.dart: -------------------------------------------------------------------------------- 1 | enum HttpMethods { 2 | get('GET'), 3 | post('POST'), 4 | put('PUT'), 5 | head('HEAD'), 6 | delete('DELETE'), 7 | patch('PATCH'); 8 | 9 | const HttpMethods(this.name); 10 | 11 | final String name; 12 | } 13 | -------------------------------------------------------------------------------- /packages/clean_framework_http/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_http 2 | description: External Interface for clean_framework package based on Dio. 3 | version: 0.4.6 4 | homepage: https://acmesoftware.com 5 | repository: https://github.com/AcmeSoftwareLLC/clean_framework/tree/main/packages/clean_framework_http 6 | 7 | environment: 8 | sdk: '>=3.0.0 <4.0.0' 9 | flutter: '>=3.0.0' 10 | 11 | dependencies: 12 | clean_framework: ^4.1.2 13 | 14 | dio: ^5.7.0 15 | dio_cache_interceptor: ^3.5.0 16 | flutter: 17 | sdk: flutter 18 | 19 | dev_dependencies: 20 | clean_framework_test: ^0.5.3 21 | 22 | flutter_test: 23 | sdk: flutter 24 | very_good_analysis: ^6.0.0 -------------------------------------------------------------------------------- /packages/clean_framework_http/test/clean_framework_http_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | void main() { 4 | test('clean_framework_http', () { 5 | expect(1, 1); 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /packages/clean_framework_router/README.md: -------------------------------------------------------------------------------- 1 | # Clean Framework Router 2 | 3 | [![Coverage](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework/branch/main/graph/badge.svg)](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework) 4 | 5 | Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. 6 | 7 | Go to [the documentation](https://docs.page/AcmeSoftwareLLC/clean_framework). -------------------------------------------------------------------------------- /packages/clean_framework_router/lib/clean_framework_router.dart: -------------------------------------------------------------------------------- 1 | export 'package:go_router/go_router.dart' 2 | show 3 | ShellRoute, 4 | StatefulNavigationShell, 5 | StatefulShellBranch, 6 | StatefulShellRoute; 7 | 8 | export 'src/app_route.dart'; 9 | export 'src/app_router.dart'; 10 | export 'src/app_router_base.dart' show RouterConfiguration, RouterParams; 11 | export 'src/app_router_scope.dart'; 12 | -------------------------------------------------------------------------------- /packages/clean_framework_router/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_router 2 | description: A wrapper around go_router to make it easier to use with clean_framework. 3 | version: 0.5.12 4 | homepage: https://acmesoftware.com/ 5 | repository: https://github.com/AcmeSoftwareLLC/clean_framework/tree/main/packages/clean_framework_router 6 | 7 | environment: 8 | sdk: '>=3.0.0 <4.0.0' 9 | flutter: '>=3.0.0' 10 | 11 | dependencies: 12 | clean_framework: ^4.1.1 13 | 14 | flutter: 15 | sdk: flutter 16 | go_router: ^14.2.7 17 | 18 | dev_dependencies: 19 | flutter_test: 20 | sdk: flutter 21 | very_good_analysis: ^6.0.0 22 | -------------------------------------------------------------------------------- /packages/clean_framework_router/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_router/web/favicon.png -------------------------------------------------------------------------------- /packages/clean_framework_router/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_router/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/clean_framework_router/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_router/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/clean_framework_router/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_router/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/clean_framework_router/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AcmeSoftwareLLC/clean_framework/6ca5a2bfed316060cfa50fc6cbc1dfb228088bb5/packages/clean_framework_router/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /packages/clean_framework_test/README.md: -------------------------------------------------------------------------------- 1 |

2 | Clean Framework 3 |

4 | 5 |

6 | Clean Framework Test 7 |

8 | 9 | [![Coverage](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework/branch/main/graph/badge.svg)](https://codecov.io/gh/AcmeSoftwareLLC/clean_framework) 10 | 11 | Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. 12 | 13 | Go to [the documentation](https://docs.page/AcmeSoftwareLLC/clean_framework). -------------------------------------------------------------------------------- /packages/clean_framework_test/lib/clean_framework_test.dart: -------------------------------------------------------------------------------- 1 | export 'src/gateway_fake.dart'; 2 | export 'src/presenter_test.dart'; 3 | export 'src/ui_test.dart'; 4 | export 'src/use_case_mock.dart'; 5 | export 'src/use_case_test.dart'; 6 | -------------------------------------------------------------------------------- /packages/clean_framework_test/lib/clean_framework_test_legacy.dart: -------------------------------------------------------------------------------- 1 | export 'src/gateway_fake.dart'; 2 | export 'src/provider_tester.dart'; 3 | export 'src/test_helpers.dart'; 4 | export 'src/use_case_fake.dart'; 5 | -------------------------------------------------------------------------------- /packages/clean_framework_test/lib/src/provider_tester.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | import 'package:flutter_riverpod/flutter_riverpod.dart'; 3 | import 'package:flutter_test/flutter_test.dart'; 4 | 5 | class ProviderTester { 6 | ProviderTester(); 7 | final _container = ProviderContainer(); 8 | 9 | Future pumpWidget(WidgetTester tester, Widget widget) => 10 | tester.pumpWidget( 11 | UncontrolledProviderScope(container: _container, child: widget), 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /packages/clean_framework_test/lib/src/use_case_mock.dart: -------------------------------------------------------------------------------- 1 | import 'package:clean_framework/clean_framework.dart'; 2 | import 'package:mocktail/mocktail.dart'; 3 | 4 | class UseCaseMock extends Mock { 5 | UseCaseMock({ 6 | required this.entity, 7 | List>? transformers, 8 | }) { 9 | if (transformers != null && transformers.isNotEmpty) { 10 | _domainModelFilters.addTransformers(transformers); 11 | } 12 | } 13 | 14 | final E entity; 15 | final DomainModelFilterMap _domainModelFilters = {}; 16 | 17 | M getDomainModel() => _domainModelFilters(entity); 18 | } 19 | -------------------------------------------------------------------------------- /packages/clean_framework_test/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_test 2 | description: A collection test helpers to support clean_framework. 3 | version: 0.5.3 4 | homepage: https://acmesoftware.com/ 5 | repository: https://github.com/AcmeSoftwareLLC/clean_framework/packages/clean_framework_test 6 | 7 | environment: 8 | sdk: '>=3.0.0 <4.0.0' 9 | flutter: '>=3.0.0' 10 | 11 | dependencies: 12 | clean_framework: ^4.0.0 13 | clean_framework_router: ^0.5.10 14 | 15 | diff_match_patch: ^0.4.1 16 | flutter: 17 | sdk: flutter 18 | flutter_riverpod: ^2.3.6 19 | flutter_test: 20 | sdk: flutter 21 | meta: '>=1.8.0 <2.0.0' 22 | mocktail: ^1.0.0 23 | 24 | dev_dependencies: 25 | very_good_analysis: ^5.0.0+1 26 | -------------------------------------------------------------------------------- /packages/clean_framework_test/test/clean_framework_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | void main() { 4 | test('Clean Framework Test', () { 5 | expect(1, 1); 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: clean_framework_workspace 2 | 3 | environment: 4 | sdk: '>=3.4.1 <4.0.0' 5 | 6 | dev_dependencies: 7 | melos: ^6.0.0 8 | very_good_analysis: ^6.0.0 9 | --------------------------------------------------------------------------------