├── .github
└── workflows
│ ├── elementary_analysis.yaml
│ ├── elementary_helper_analysis.yaml
│ ├── publish_elementary_cli_to_pub.yaml
│ ├── publish_elementary_test_to_pub.yaml
│ ├── publish_elementary_to_pub.yaml
│ ├── publish_intellij_plugin.yaml
│ └── publish_vscode_plugin.yaml
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── documentation
└── elementary
│ ├── docs
│ ├── about.md
│ ├── assets
│ │ └── logo.png
│ ├── images
│ │ └── favicon.png
│ ├── index.md
│ ├── libs
│ │ ├── elementary-helper
│ │ │ ├── intro.md
│ │ │ ├── publishers.md
│ │ │ └── subscribers.md
│ │ ├── elementary-test
│ │ │ ├── intro.md
│ │ │ └── overview.md
│ │ └── elementary
│ │ │ ├── intro.md
│ │ │ ├── model.md
│ │ │ ├── overview.md
│ │ │ ├── recommendations.md
│ │ │ ├── widget-model.md
│ │ │ └── widget.md
│ ├── license.md
│ └── tutorials
│ │ └── qs
│ │ ├── dependencies.md
│ │ ├── implementation.md
│ │ ├── tests.md
│ │ └── tooling.md
│ └── mkdocs.yml
├── examples
├── country
│ ├── .fvm
│ │ ├── flutter_sdk
│ │ └── fvm_config.json
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── country
│ │ │ │ │ │ └── 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
│ │ └── mock_data
│ │ │ └── countries.json
│ ├── dart_test.yaml
│ ├── 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
│ │ ├── assets
│ │ │ ├── colors
│ │ │ │ └── colors.dart
│ │ │ ├── res
│ │ │ │ ├── base_resources_paths.dart
│ │ │ │ └── template_list.dart
│ │ │ └── themes
│ │ │ │ └── app_theme.dart
│ │ ├── config
│ │ │ └── urls.dart
│ │ ├── features
│ │ │ ├── business
│ │ │ │ ├── README.md
│ │ │ │ └── country
│ │ │ │ │ ├── data
│ │ │ │ │ ├── api
│ │ │ │ │ │ ├── country_client.dart
│ │ │ │ │ │ └── country_client.g.dart
│ │ │ │ │ ├── converter
│ │ │ │ │ │ └── country_mappers.dart
│ │ │ │ │ ├── dto
│ │ │ │ │ │ ├── country_data.dart
│ │ │ │ │ │ ├── country_data.g.dart
│ │ │ │ │ │ ├── country_flag_data.dart
│ │ │ │ │ │ ├── country_flag_data.g.dart
│ │ │ │ │ │ ├── country_name_data.dart
│ │ │ │ │ │ └── country_name_data.g.dart
│ │ │ │ │ └── repository
│ │ │ │ │ │ ├── country_repository.dart
│ │ │ │ │ │ └── mock_country_repository.dart
│ │ │ │ │ └── domain
│ │ │ │ │ ├── contract
│ │ │ │ │ └── country_repository.dart
│ │ │ │ │ └── model
│ │ │ │ │ └── country.dart
│ │ │ └── presentation
│ │ │ │ ├── README.md
│ │ │ │ ├── app
│ │ │ │ └── app.dart
│ │ │ │ ├── di
│ │ │ │ ├── app_scope.dart
│ │ │ │ └── app_scope_provider.dart
│ │ │ │ ├── routing
│ │ │ │ ├── app_coordinates.dart
│ │ │ │ ├── coordinator.dart
│ │ │ │ ├── route_information_parser.dart
│ │ │ │ └── router_delegate.dart
│ │ │ │ └── screens
│ │ │ │ └── country_list_screen
│ │ │ │ ├── country_list_screen.dart
│ │ │ │ ├── country_list_screen_model.dart
│ │ │ │ └── country_list_screen_widget_model.dart
│ │ ├── main.dart
│ │ ├── runner.dart
│ │ └── utils
│ │ │ ├── widgets
│ │ │ └── shimmer.dart
│ │ │ └── wrappers
│ │ │ └── scaffold_messenger_wrapper.dart
│ ├── pubspec.yaml
│ ├── test
│ │ ├── flutter_test_config.dart
│ │ ├── golden
│ │ │ └── screen
│ │ │ │ └── country_list_screen
│ │ │ │ ├── country_list_screen_test.dart
│ │ │ │ └── goldens
│ │ │ │ ├── country_list_screen_content.png
│ │ │ │ └── country_list_screen_error.png
│ │ ├── test_helper.dart
│ │ ├── unit
│ │ │ ├── model
│ │ │ │ └── county_list_screen
│ │ │ │ │ └── country_list_screen_model_test.dart
│ │ │ └── unit_helper.dart
│ │ ├── widget
│ │ │ └── screen
│ │ │ │ └── country_list_screen_test.dart
│ │ └── wm_test
│ │ │ └── screen
│ │ │ └── country_list_screen
│ │ │ └── country_list_screen_wm_test.dart
│ └── web
│ │ ├── favicon.png
│ │ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ │ ├── index.html
│ │ └── manifest.json
├── elementary_redux
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── redux_elementary_test
│ │ │ │ │ │ └── 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
│ ├── generate.sh
│ ├── 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_providers.dart
│ │ ├── ext
│ │ │ └── scope_functions_extension.dart
│ │ ├── main.dart
│ │ ├── model
│ │ │ ├── dog_data.dart
│ │ │ ├── dog_data.freezed.dart
│ │ │ ├── dog_dto.dart
│ │ │ └── dog_dto.g.dart
│ │ ├── redux
│ │ │ ├── actions
│ │ │ │ ├── action_completer_mixin.dart
│ │ │ │ ├── adding_data_action.dart
│ │ │ │ ├── catching_error_action.dart
│ │ │ │ ├── clearing_all_data_action.dart
│ │ │ │ ├── init_action.dart
│ │ │ │ ├── request_clear_action.dart
│ │ │ │ ├── request_init_action.dart
│ │ │ │ └── request_loading_action.dart
│ │ │ ├── control
│ │ │ │ ├── dog_data_epics_middleware.dart
│ │ │ │ └── dog_data_reducers.dart
│ │ │ └── store
│ │ │ │ ├── dogs_state.dart
│ │ │ │ └── dogs_state.freezed.dart
│ │ ├── screen
│ │ │ ├── main_model.dart
│ │ │ ├── main_screen.dart
│ │ │ └── main_wm.dart
│ │ ├── services
│ │ │ └── client.dart
│ │ └── shared_pref_helper.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── redux
│ │ └── control
│ │ ├── epics_middleware_test.dart
│ │ └── reducers_test.dart
└── profile
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── profile
│ │ │ │ │ └── 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
│ └── icons
│ │ └── user.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
│ ├── assets
│ │ ├── colors
│ │ │ └── colors.dart
│ │ ├── res
│ │ │ └── icons.dart
│ │ ├── strings
│ │ │ ├── about_me_screen_strings.dart
│ │ │ ├── interests_screen_strings.dart
│ │ │ ├── main_strings.dart
│ │ │ ├── personal_data_screen_strings.dart
│ │ │ └── place_residence_screen_strings.dart
│ │ └── themes
│ │ │ └── text_style.dart
│ ├── features
│ │ ├── app
│ │ │ ├── app.dart
│ │ │ └── di
│ │ │ │ └── app_scope.dart
│ │ ├── cities
│ │ │ └── service
│ │ │ │ └── repository
│ │ │ │ └── mock_cities_repository.dart
│ │ ├── common
│ │ │ └── widgets
│ │ │ │ └── di_scope
│ │ │ │ └── di_scope.dart
│ │ ├── interests
│ │ │ └── service
│ │ │ │ └── repository
│ │ │ │ └── mock_interests_repository.dart
│ │ ├── navigation
│ │ │ ├── domain
│ │ │ │ ├── delegate
│ │ │ │ │ └── app_router_delegate.dart
│ │ │ │ ├── entity
│ │ │ │ │ ├── app_coordinate.dart
│ │ │ │ │ └── coordinate.dart
│ │ │ │ └── parser
│ │ │ │ │ └── app_route_information_parser.dart
│ │ │ └── service
│ │ │ │ └── coordinator.dart
│ │ ├── profile
│ │ │ ├── domain
│ │ │ │ └── profile.dart
│ │ │ ├── screens
│ │ │ │ ├── about_me_screen
│ │ │ │ │ ├── about_me_screen.dart
│ │ │ │ │ ├── about_me_screen_model.dart
│ │ │ │ │ └── about_me_screen_widget_model.dart
│ │ │ │ ├── init_screen
│ │ │ │ │ └── init_screen.dart
│ │ │ │ ├── interests_screen
│ │ │ │ │ ├── interests_screen.dart
│ │ │ │ │ ├── interests_screen_model.dart
│ │ │ │ │ └── interests_screen_widget_model.dart
│ │ │ │ ├── personal_data_screen
│ │ │ │ │ ├── personal_data_screen.dart
│ │ │ │ │ ├── personal_data_screen_model.dart
│ │ │ │ │ ├── personal_data_screen_widget_model.dart
│ │ │ │ │ └── widgets
│ │ │ │ │ │ └── text_form_field_widget.dart
│ │ │ │ └── place_residence
│ │ │ │ │ ├── place_residence_screen.dart
│ │ │ │ │ ├── place_residence_screen_model.dart
│ │ │ │ │ ├── place_residence_screen_widget_model.dart
│ │ │ │ │ ├── utils
│ │ │ │ │ └── overlay_entry_controller.dart
│ │ │ │ │ └── widgets
│ │ │ │ │ └── field_with_suggestions_widget
│ │ │ │ │ ├── field_with_suggestions_model.dart
│ │ │ │ │ ├── field_with_suggestions_widget.dart
│ │ │ │ │ └── field_with_suggestions_widget_model.dart
│ │ │ ├── service
│ │ │ │ ├── profile_bloc
│ │ │ │ │ ├── profile_bloc.dart
│ │ │ │ │ ├── profile_event.dart
│ │ │ │ │ └── profile_state.dart
│ │ │ │ └── repository
│ │ │ │ │ └── mock_profile_repository.dart
│ │ │ └── widgets
│ │ │ │ ├── cancel_button
│ │ │ │ ├── cancel_button.dart
│ │ │ │ ├── cancel_button_model.dart
│ │ │ │ └── cancel_button_widget_model.dart
│ │ │ │ ├── error_widget.dart
│ │ │ │ └── next_button.dart
│ │ └── server
│ │ │ ├── domain
│ │ │ ├── mock_list_cities.dart
│ │ │ └── mock_list_interests.dart
│ │ │ └── mock_server
│ │ │ └── mock_server.dart
│ ├── main.dart
│ ├── runner.dart
│ └── util
│ │ ├── default_error_handler.dart
│ │ └── dialog_controller.dart
│ ├── pubspec.yaml
│ └── res
│ └── bloc_diagram.png
├── packages
├── elementary
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── dart_dependency_validator.yaml
│ ├── example
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── analysis_options.yaml
│ │ ├── android
│ │ │ ├── .gitignore
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── debug
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── kotlin
│ │ │ │ │ │ └── com
│ │ │ │ │ │ │ └── example
│ │ │ │ │ │ │ └── counter
│ │ │ │ │ │ │ └── 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
│ │ │ └── main.dart
│ │ ├── pubspec.yaml
│ │ └── web
│ │ │ ├── favicon.png
│ │ │ ├── icons
│ │ │ ├── Icon-192.png
│ │ │ ├── Icon-512.png
│ │ │ ├── Icon-maskable-192.png
│ │ │ └── Icon-maskable-512.png
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ ├── lib
│ │ ├── elementary.dart
│ │ └── src
│ │ │ ├── core.dart
│ │ │ ├── error
│ │ │ └── error_handler.dart
│ │ │ ├── keep_alive
│ │ │ └── automatic_keep_alive_widget_model_mixin.dart
│ │ │ └── ticker
│ │ │ └── ticker_providers.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── automatic_keep_alive_widget_model_mixin
│ │ └── automatic_keep_alive_widget_model_mixin_test.dart
│ │ ├── core
│ │ ├── elementary_model_test.dart
│ │ ├── elementary_test.dart
│ │ ├── elemetary_widget_test.dart
│ │ └── widget_model_test.dart
│ │ ├── error
│ │ └── error_handler_test.dart
│ │ └── ticker_providers
│ │ ├── single_ticker_provider_widget_model_mixin_test.dart
│ │ └── ticker_provider_widget_model_mixin_test.dart
├── elementary_helper
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android
│ │ │ ├── .gitignore
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── debug
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── kotlin
│ │ │ │ │ │ └── mjk
│ │ │ │ │ │ │ └── elementary
│ │ │ │ │ │ │ └── example
│ │ │ │ │ │ │ └── helper_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
│ │ │ └── main.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
│ │ │ ├── Flutter
│ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ ├── Flutter-Release.xcconfig
│ │ │ │ └── GeneratedPluginRegistrant.swift
│ │ │ ├── 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
│ ├── lib
│ │ ├── elementary_helper.dart
│ │ └── src
│ │ │ ├── relations
│ │ │ ├── builder
│ │ │ │ ├── entity_state_notifier_builder.dart
│ │ │ │ ├── multi_sources
│ │ │ │ │ ├── double_source_builder.dart
│ │ │ │ │ ├── double_value_listenable_builder.dart
│ │ │ │ │ ├── multi_listener_rebuilder.dart
│ │ │ │ │ ├── triple_source_builder.dart
│ │ │ │ │ └── triple_value_listenable_builder.dart
│ │ │ │ └── state_notifier_builder.dart
│ │ │ └── notifier
│ │ │ │ ├── entity_state_notifier.dart
│ │ │ │ └── state_notifier.dart
│ │ │ └── wrappers
│ │ │ └── theme_wrapper.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── relations
│ │ ├── builder
│ │ │ ├── entity_state_notifier_builder_test.dart
│ │ │ ├── multi_sources
│ │ │ │ ├── double_source_builder_test.dart
│ │ │ │ ├── double_value_listenable_builder_test.dart
│ │ │ │ ├── multi_listener_rebuilder_test.dart
│ │ │ │ ├── triple_source_builder_test.dart
│ │ │ │ └── triple_value_listenable_builder_test.dart
│ │ │ └── state_notifier_builder_test.dart
│ │ └── notifier
│ │ │ ├── entity_state_notifier_test.dart
│ │ │ ├── entity_state_test.dart
│ │ │ └── state_notifier_test.dart
│ │ └── wrapper
│ │ └── theme_wrapper_test.dart
├── elementary_test
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── example
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── analysis_options.yaml
│ │ ├── android
│ │ │ ├── .gitignore
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── debug
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── kotlin
│ │ │ │ │ │ └── com
│ │ │ │ │ │ │ └── example
│ │ │ │ │ │ │ └── counter
│ │ │ │ │ │ │ └── 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
│ │ │ └── main.dart
│ │ ├── pubspec.yaml
│ │ ├── test
│ │ │ └── country_list_screen_wm_test.dart
│ │ └── web
│ │ │ ├── favicon.png
│ │ │ ├── icons
│ │ │ ├── Icon-192.png
│ │ │ ├── Icon-512.png
│ │ │ ├── Icon-maskable-192.png
│ │ │ └── Icon-maskable-512.png
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ ├── lib
│ │ ├── elementary_test.dart
│ │ └── src
│ │ │ └── widget_model_test.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── elementary_test_test.dart
└── elementary_tools
│ ├── README.md
│ ├── elementary_bricks
│ └── elementary
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __brick__
│ │ └── {{widget_file}}
│ │ │ ├── {{model_file}}.dart
│ │ │ ├── {{widget_file}}.dart
│ │ │ └── {{widget_model_file}}.dart
│ │ ├── brick.yaml
│ │ └── hooks
│ │ ├── .gitignore
│ │ ├── pre_gen.dart
│ │ └── pubspec.yaml
│ ├── elementary_cli
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── bin
│ │ └── elementary_tools.dart
│ ├── lib
│ │ ├── analyzer_plugin
│ │ │ ├── elementary_plugin.dart
│ │ │ └── start_elementary_plugin.dart
│ │ ├── console_writer.dart
│ │ ├── exit_code_exception.dart
│ │ ├── generate
│ │ │ ├── generate.dart
│ │ │ ├── generate_module.dart
│ │ │ ├── generate_test.dart
│ │ │ └── generate_test_wm.dart
│ │ └── templates
│ │ │ ├── README.md
│ │ │ ├── model.dart.tp
│ │ │ ├── test_wm.dart.tp
│ │ │ ├── widget.dart.tp
│ │ │ └── widget_model.dart.tp
│ ├── pubspec.yaml
│ └── tools
│ │ └── analyzer_plugin
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── bin
│ │ └── plugin.dart
│ │ └── pubspec.yaml
│ ├── plugin_intellij
│ ├── .gitignore
│ ├── .run
│ │ ├── Run IDE for UI Tests.run.xml
│ │ ├── Run Plugin Tests.run.xml
│ │ ├── Run Plugin Verification.run.xml
│ │ └── Run Qodana.run.xml
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── qodana.yml
│ ├── settings.gradle.kts
│ └── src
│ │ ├── main
│ │ ├── kotlin
│ │ │ └── ru
│ │ │ │ └── elementaryteam
│ │ │ │ └── elementarypluginintellij
│ │ │ │ ├── ElementaryCliChecker.kt
│ │ │ │ ├── ElementaryCliInstallAction.kt
│ │ │ │ ├── ElementaryModuleGeneratorDialog.kt
│ │ │ │ ├── ElementaryModuleGeneratorMenuAction.kt
│ │ │ │ ├── MyBundle.kt
│ │ │ │ ├── activity
│ │ │ │ └── MyProjectActivity.kt
│ │ │ │ └── services
│ │ │ │ ├── MyApplicationService.kt
│ │ │ │ └── MyProjectService.kt
│ │ └── resources
│ │ │ ├── META-INF
│ │ │ ├── plugin.xml
│ │ │ └── pluginIcon.svg
│ │ │ └── messages
│ │ │ └── MyBundle.properties
│ │ └── test
│ │ ├── kotlin
│ │ └── ru
│ │ │ └── elementaryteam
│ │ │ └── elementarypluginintellij
│ │ │ └── ElementaryModuleGeneratorValidationTest.kt
│ │ └── testData
│ │ └── moduleNameValidation
│ │ ├── invalidNames.txt
│ │ └── validNames.txt
│ └── plugin_vscode
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── .vscodeignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package-lock.json
│ ├── package.json
│ ├── snippets
│ └── elementary.json
│ ├── src
│ ├── commands
│ │ ├── generate_module.ts
│ │ └── generate_test_wm.ts
│ ├── extension.ts
│ ├── test
│ │ ├── runTest.ts
│ │ └── suite
│ │ │ ├── extension.test.ts
│ │ │ └── index.ts
│ └── utils
│ │ ├── activate_cli_tools.ts
│ │ └── generate_command_utils.ts
│ └── tsconfig.json
└── tools
├── make
└── docs.mk
└── workspace
├── elementary.code-workspace
├── elementary_helper.code-workspace
├── elementary_test.code-workspace
└── main.code-workspace
/.github/workflows/publish_intellij_plugin.yaml:
--------------------------------------------------------------------------------
1 | # Runs for every tag starting with 'plugin_intellij_v' keyword
2 | # Example: 'plugin_intellij_v1.0.0'
3 | name: Intellij plugin
4 | on:
5 | push:
6 | tags:
7 | - 'plugin_intellij_v*'
8 |
9 | # Must be set:
10 | # secrets.INTELLIJ_TOKEN - PERSONAL ACCESS TOKEN
11 | # Deploy uses gradle: (https://plugins.jetbrains.com/docs/intellij/deployment.html)
12 | jobs:
13 | Publish-Vscode-plugin:
14 | runs-on: ubuntu-latest
15 | steps:
16 | - run: echo To Be Implemented
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.lock
4 | *.log
5 | *.pyc
6 | *.swp
7 | .DS_Store
8 | .atom/
9 | .buildlog/
10 | .history
11 | .svn/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # Visual Studio Code related
20 | .classpath
21 | .project
22 | .settings/
23 | .vscode/
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | -include tools/make/docs.mk
--------------------------------------------------------------------------------
/documentation/elementary/docs/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/documentation/elementary/docs/assets/logo.png
--------------------------------------------------------------------------------
/documentation/elementary/docs/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/documentation/elementary/docs/images/favicon.png
--------------------------------------------------------------------------------
/examples/country/.fvm/flutter_sdk:
--------------------------------------------------------------------------------
1 | /Users/mjk/fvm/versions/3.22.3
--------------------------------------------------------------------------------
/examples/country/.fvm/fvm_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "flutterSdkVersion": "3.22.3",
3 | "flavors": {}
4 | }
--------------------------------------------------------------------------------
/examples/country/.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: 9b2d32b605630f28625709ebd9d78ab3016b2bf6
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/examples/country/README.md:
--------------------------------------------------------------------------------
1 | # Country
2 |
3 | Example of using Elementary library for development app.
--------------------------------------------------------------------------------
/examples/country/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:mjk_lint_rules/mjk_lint_rules.yaml
2 |
3 | analyzer:
4 | exclude:
5 | - "build/**"
6 | - "script/**"
7 | - "**/*.g.dart"
8 |
9 | linter:
10 | rules:
11 | always_put_required_named_parameters_first: false
12 | sort_pub_dependencies: false
13 |
14 | dart_code_metrics:
15 | - member-ordering-extended:
16 | severety: none
--------------------------------------------------------------------------------
/examples/country/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 |
--------------------------------------------------------------------------------
/examples/country/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/kotlin/com/example/country/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.country
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/country/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/country/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/country/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = '../build'
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | }
12 | subprojects {
13 | project.evaluationDependsOn(':app')
14 | }
15 |
16 | tasks.register("clean", Delete) {
17 | delete rootProject.buildDir
18 | }
19 |
--------------------------------------------------------------------------------
/examples/country/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/examples/country/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.6.3-all.zip
6 |
--------------------------------------------------------------------------------
/examples/country/dart_test.yaml:
--------------------------------------------------------------------------------
1 | tags:
2 | golden:
3 | timeout: 1x
--------------------------------------------------------------------------------
/examples/country/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 |
--------------------------------------------------------------------------------
/examples/country/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/examples/country/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/country/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 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/examples/country/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 |
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/examples/country/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.
--------------------------------------------------------------------------------
/examples/country/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/examples/country/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 |
--------------------------------------------------------------------------------
/examples/country/lib/assets/res/base_resources_paths.dart:
--------------------------------------------------------------------------------
1 | /// List of base paths for resources.
2 | abstract class BaseResourcesPaths {
3 | /// Directory with all assets.
4 | static const String baseAssetsPath = 'assets';
5 | /// Directory with all images.
6 | static const String baseImagesPath = '$baseAssetsPath/images';
7 | /// Directory with all icons.
8 | static const String baseIconsPath = '$baseAssetsPath/icons';
9 | }
--------------------------------------------------------------------------------
/examples/country/lib/assets/res/template_list.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/assets/res/base_resources_paths.dart';
2 |
3 | const String _imagesBasePath =
4 | '${BaseResourcesPaths.baseImagesPath}/template_list';
5 |
6 | /// List of used assets in [...].
7 | abstract class TemplateListResources {
8 | /// Some resource
9 | static const String resource1 = '$_imagesBasePath/placeholder.webp';
10 | }
11 |
--------------------------------------------------------------------------------
/examples/country/lib/assets/themes/app_theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/assets/colors/colors.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | /// Theme data for application.
5 | final appTheme = ThemeData(
6 | colorScheme: const ColorScheme(
7 | brightness: Brightness.light,
8 | primary: primaryColor,
9 | onPrimary: accentColor,
10 | secondary: accentColor,
11 | onSecondary: primaryColor,
12 | error: errorColor,
13 | onError: whiteColor,
14 | background: backgroundColor,
15 | onBackground: textColorPrimary,
16 | surface: backgroundColor,
17 | onSurface: textColorPrimary,
18 | ),
19 | );
20 |
--------------------------------------------------------------------------------
/examples/country/lib/config/urls.dart:
--------------------------------------------------------------------------------
1 | /// Contains urls that are used in the app.
2 | class AppUrls {
3 | static const String _apiUrl = 'https://restcountries.com/v3.1/';
4 |
5 | static const base = _apiUrl;
6 | static const allCountries = 'all';
7 | }
8 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/README.md:
--------------------------------------------------------------------------------
1 | # A place for storing business features.
2 |
3 | For example: services, repositories, business models, and all other things that more belong to business features than to presenting this feature to a user.
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/api/country_client.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/config/urls.dart';
2 | import 'package:country/features/business/country/data/dto/country_data.dart';
3 | import 'package:dio/dio.dart';
4 | import 'package:retrofit/retrofit.dart';
5 |
6 | part 'country_client.g.dart';
7 |
8 | @RestApi()
9 | abstract class CountryClient {
10 | factory CountryClient(Dio dio, {String baseUrl}) = _CountryClient;
11 |
12 | /// An endpoint provides country list.
13 | @GET(AppUrls.allCountries)
14 | Future> getAll();
15 | }
16 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/converter/country_mappers.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/business/country/data/dto/country_data.dart';
2 | import 'package:country/features/business/country/domain/model/country.dart';
3 |
4 | /// Map Country from CountryData
5 | Country mapCountry(CountryData data) {
6 | return Country(
7 | name: data.name.common,
8 | flag: data.flags.png.replaceFirst('/w320/', '/w640/'),
9 | );
10 | }
11 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/dto/country_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/business/country/data/dto/country_flag_data.dart';
2 | import 'package:country/features/business/country/data/dto/country_name_data.dart';
3 | import 'package:json_annotation/json_annotation.dart';
4 |
5 | part 'country_data.g.dart';
6 |
7 | /// DTO for country.
8 | @JsonSerializable()
9 | class CountryData {
10 | final CountryNameData name;
11 | final CountryFlagData flags;
12 |
13 | CountryData({
14 | required this.name,
15 | required this.flags,
16 | });
17 |
18 | factory CountryData.fromJson(Map json) =>
19 | _$CountryDataFromJson(json);
20 |
21 | Map toJson() => _$CountryDataToJson(this);
22 | }
23 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/dto/country_flag_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'country_flag_data.g.dart';
4 |
5 | /// DTO for flag.
6 | @JsonSerializable()
7 | class CountryFlagData {
8 | final String png;
9 | final String svg;
10 |
11 | CountryFlagData({
12 | required this.png,
13 | required this.svg,
14 | });
15 |
16 | factory CountryFlagData.fromJson(Map json) =>
17 | _$CountryFlagDataFromJson(json);
18 |
19 | Map toJson() => _$CountryFlagDataToJson(this);
20 | }
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/dto/country_flag_data.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'country_flag_data.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CountryFlagData _$CountryFlagDataFromJson(Map json) =>
10 | CountryFlagData(
11 | png: json['png'] as String,
12 | svg: json['svg'] as String,
13 | );
14 |
15 | Map _$CountryFlagDataToJson(CountryFlagData instance) =>
16 | {
17 | 'png': instance.png,
18 | 'svg': instance.svg,
19 | };
20 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/dto/country_name_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | part 'country_name_data.g.dart';
4 |
5 | /// DTO for country name.
6 | @JsonSerializable()
7 | class CountryNameData {
8 | final String common;
9 | final String official;
10 |
11 | CountryNameData({
12 | required this.common,
13 | required this.official,
14 | });
15 |
16 | factory CountryNameData.fromJson(Map json) =>
17 | _$CountryNameDataFromJson(json);
18 |
19 | Map toJson() => _$CountryNameDataToJson(this);
20 | }
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/data/dto/country_name_data.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'country_name_data.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | CountryNameData _$CountryNameDataFromJson(Map json) =>
10 | CountryNameData(
11 | common: json['common'] as String,
12 | official: json['official'] as String,
13 | );
14 |
15 | Map _$CountryNameDataToJson(CountryNameData instance) =>
16 | {
17 | 'common': instance.common,
18 | 'official': instance.official,
19 | };
20 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/domain/contract/country_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/business/country/domain/model/country.dart';
2 |
3 | /// A country repository contract.
4 | abstract interface class ICountryRepository {
5 | /// Provides information about all countries.
6 | Future> loadAllCountries();
7 | }
8 |
--------------------------------------------------------------------------------
/examples/country/lib/features/business/country/domain/model/country.dart:
--------------------------------------------------------------------------------
1 | /// A business model for country.
2 | class Country {
3 | final String name;
4 | final String flag;
5 |
6 | Country({
7 | required this.flag,
8 | required this.name,
9 | });
10 | }
11 |
--------------------------------------------------------------------------------
/examples/country/lib/features/presentation/README.md:
--------------------------------------------------------------------------------
1 | # A place for storing configuration and presentation implementations.
2 |
3 | For example: Application, DI, common widgets, screens, routing, etc.
--------------------------------------------------------------------------------
/examples/country/lib/features/presentation/routing/app_coordinates.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/presentation/screens/country_list_screen/country_list_screen.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | /// Builder for a navigation place
5 | typedef CoordinateBuilder = Widget Function(
6 | BuildContext? context,
7 | Object? data,
8 | );
9 |
10 | /// Describes a destination in the app.
11 | class AppCoordinate {
12 | static const countryList = AppCoordinate._('countryListScreen');
13 | static const initial = countryList;
14 |
15 | final String value;
16 |
17 | const AppCoordinate._(this.value);
18 | }
19 |
20 | final Map appCoordinates = {
21 | AppCoordinate.countryList: (_, __) => const CountryListScreen(),
22 | };
23 |
--------------------------------------------------------------------------------
/examples/country/lib/features/presentation/routing/route_information_parser.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/presentation/routing/app_coordinates.dart';
2 | import 'package:flutter/foundation.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | /// A delegate that is used by the [Router] widget to parse a route information
6 | /// into an application navigation configuration.
7 | class CountryRouteInformationParser
8 | extends RouteInformationParser {
9 | @override
10 | Future parseRouteInformation(
11 | RouteInformation routeInformation,
12 | ) {
13 | // Should be adjusted if need parse outside navigation request
14 | return SynchronousFuture(AppCoordinate.initial);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/examples/country/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/runner.dart';
2 |
3 | /// An entry point of the app.
4 | Future main() async {
5 | await run();
6 | }
7 |
--------------------------------------------------------------------------------
/examples/country/lib/runner.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:country/features/presentation/app/app.dart';
4 | import 'package:flutter/services.dart';
5 | import 'package:flutter/widgets.dart';
6 |
7 | /// Launches the application.
8 | Future run() async {
9 | return runZonedGuarded>(
10 | () async {
11 | WidgetsFlutterBinding.ensureInitialized();
12 | await SystemChrome.setPreferredOrientations(
13 | [DeviceOrientation.portraitUp],
14 | );
15 |
16 | runApp(const App());
17 | },
18 | (exception, stack) {
19 | // TODO(mjk): add logging errors to the report system
20 | },
21 | );
22 | }
23 |
--------------------------------------------------------------------------------
/examples/country/lib/utils/widgets/shimmer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:shimmer/shimmer.dart';
3 |
4 | /// Shows shimmer effect over widget.
5 | class ShimmerWrapper extends StatelessWidget {
6 | final Widget child;
7 |
8 | const ShimmerWrapper({
9 | super.key,
10 | required this.child,
11 | });
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Shimmer.fromColors(
16 | baseColor: Colors.grey[200]!,
17 | highlightColor: Colors.grey[300]!,
18 | child: child,
19 | );
20 | }
21 | }
--------------------------------------------------------------------------------
/examples/country/lib/utils/wrappers/scaffold_messenger_wrapper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | /// Wrapper for hiding direct call flutter ScaffoldManager.
4 | class ScaffoldMessengerWrapper {
5 | /// Shows a default snackBar.
6 | void showSnackBar(BuildContext context, String message) {
7 | ScaffoldMessenger.of(context).showSnackBar(
8 | _DefaultSnack(message: message),
9 | );
10 | }
11 | }
12 |
13 | class _DefaultSnack extends SnackBar {
14 | final String message;
15 |
16 | _DefaultSnack({required this.message}) : super(content: Text(message));
17 | }
18 |
--------------------------------------------------------------------------------
/examples/country/test/flutter_test_config.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:golden_toolkit/golden_toolkit.dart';
4 |
5 | const _devicesWithTolerance = {
6 | Device.phone: 5.1,
7 | Device.iphone11: 3.4,
8 | Device.tabletPortrait: 1.0,
9 | Device.tabletLandscape: 1.0,
10 | };
11 |
12 | Future testExecutable(FutureOr Function() testMain) async {
13 | return GoldenToolkit.runWithConfiguration(
14 | () async {
15 | await loadAppFonts();
16 | await testMain();
17 | },
18 | config: GoldenToolkitConfiguration(
19 | defaultDevices: _devicesWithTolerance.keys.toList(),
20 | enableRealShadows: true,
21 | ),
22 | );
23 | }
24 |
--------------------------------------------------------------------------------
/examples/country/test/golden/screen/country_list_screen/goldens/country_list_screen_content.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/test/golden/screen/country_list_screen/goldens/country_list_screen_content.png
--------------------------------------------------------------------------------
/examples/country/test/golden/screen/country_list_screen/goldens/country_list_screen_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/test/golden/screen/country_list_screen/goldens/country_list_screen_error.png
--------------------------------------------------------------------------------
/examples/country/test/unit/unit_helper.dart:
--------------------------------------------------------------------------------
1 | import 'package:country/features/business/country/domain/contract/country_repository.dart';
2 | import 'package:elementary/elementary.dart';
3 | import 'package:mocktail/mocktail.dart';
4 |
5 | class CountryRepositoryMock extends Mock implements ICountryRepository {}
6 |
7 | class ErrorHandlerMock extends Mock implements ErrorHandler {}
8 |
--------------------------------------------------------------------------------
/examples/country/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/web/favicon.png
--------------------------------------------------------------------------------
/examples/country/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/examples/country/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/examples/country/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/examples/country/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/country/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/examples/elementary_redux/README.md:
--------------------------------------------------------------------------------
1 | # Elementary with Redux example
2 |
3 | We'd like to show you a small example of how **Elementary** works well with **Redux**.
4 |
5 | App description:
6 |
7 | * The program downloads and displays a randomly selected dog photo when you click the "plus" button.
8 | * When you restart the application, the downloaded data remains on the screen rather than being downloaded over the network.
9 | * All photos should be deleted once you click the "cross."
10 |
11 | For API workflow, we use dio, and for state management, we use redux and redux epics.
12 |
--------------------------------------------------------------------------------
/examples/elementary_redux/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 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/kotlin/com/example/redux_elementary_test/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.redux_elementary_test
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/examples/elementary_redux/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.6.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:4.1.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/examples/elementary_redux/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/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 |
--------------------------------------------------------------------------------
/examples/elementary_redux/generate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | flutter pub run build_runner build --delete-conflicting-outputs
3 | flutter format .
4 |
--------------------------------------------------------------------------------
/examples/elementary_redux/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 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/examples/elementary_redux/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 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/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 |
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Elementary-team/flutter-elementary/b933c38c47b8e31a7a6047f462edf3e424df48a5/examples/elementary_redux/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/examples/elementary_redux/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.
--------------------------------------------------------------------------------
/examples/elementary_redux/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/ext/scope_functions_extension.dart:
--------------------------------------------------------------------------------
1 | extension ScopeFunctionsExtension on T {
2 | /// https://kotlinlang.org/docs/scope-functions.html#let
3 | ReturnType let(ReturnType Function(T it) operationFor) {
4 | return operationFor(this);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:redux_elementary_test/app_providers.dart';
3 |
4 | import 'screen/main_screen.dart';
5 |
6 | void main() {
7 | runApp(const AppProviders(
8 | child: MyApp(),
9 | ));
10 | }
11 |
12 | class MyApp extends StatelessWidget {
13 | const MyApp({Key? key}) : super(key: key);
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return MaterialApp(
18 | title: 'Flutter Demo',
19 | theme: ThemeData(
20 | primarySwatch: Colors.blue,
21 | ),
22 | home: const MainScreen(),
23 | );
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/model/dog_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'dog_data.freezed.dart';
4 |
5 | @freezed
6 | class DogData with _$DogData {
7 | const factory DogData({
8 | required final String message,
9 | required final String status,
10 | }) = _DogData;
11 | }
12 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/model/dog_dto.dart:
--------------------------------------------------------------------------------
1 | import 'package:json_annotation/json_annotation.dart';
2 |
3 | import 'dog_data.dart';
4 |
5 | part 'dog_dto.g.dart';
6 |
7 | @JsonSerializable(createToJson: false, checked: true)
8 | class DogDTO {
9 | final String message;
10 | final String status;
11 |
12 | const DogDTO(
13 | this.message,
14 | this.status,
15 | );
16 |
17 | factory DogDTO.fromJson(Map json) => _$DogDTOFromJson(json);
18 |
19 | DogData toModel() => DogData(
20 | message: message,
21 | status: status,
22 | );
23 | }
24 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/model/dog_dto.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'dog_dto.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | DogDTO _$DogDTOFromJson(Map json) => $checkedCreate(
10 | 'DogDTO',
11 | json,
12 | ($checkedConvert) {
13 | final val = DogDTO(
14 | $checkedConvert('message', (v) => v as String),
15 | $checkedConvert('status', (v) => v as String),
16 | );
17 | return val;
18 | },
19 | );
20 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/action_completer_mixin.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | mixin ActionCompleterMixin {
4 | final _completer = Completer();
5 |
6 | void complete() {
7 | if (!_completer.isCompleted) {
8 | _completer.complete();
9 | }
10 | }
11 |
12 | void completeError(Object error, [StackTrace? stackTrace]) {
13 | if (!_completer.isCompleted) {
14 | _completer.completeError(
15 | error,
16 | stackTrace,
17 | );
18 | }
19 | }
20 |
21 | Future get future => _completer.future;
22 | }
23 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/adding_data_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:redux_elementary_test/model/dog_data.dart';
3 |
4 | @immutable
5 | class AddingDataAction {
6 | final DogData newDog;
7 |
8 | const AddingDataAction(this.newDog);
9 | }
10 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/catching_error_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:meta/meta.dart';
3 |
4 | @immutable
5 | class CatchingErrorAction {
6 | final DioError error;
7 |
8 | const CatchingErrorAction(this.error);
9 | }
10 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/clearing_all_data_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | @immutable
4 | class ClearingAllDataAction {
5 | const ClearingAllDataAction();
6 | }
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/init_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:fast_immutable_collections/fast_immutable_collections.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:redux_elementary_test/model/dog_data.dart';
4 |
5 | @immutable
6 | class InitAction {
7 | final IList iList;
8 | const InitAction(this.iList);
9 | }
10 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/request_clear_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | @immutable
4 | class RequestClearAction {
5 | const RequestClearAction();
6 | }
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/request_init_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | @immutable
4 | class RequestInitAction {
5 | const RequestInitAction();
6 | }
7 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/actions/request_loading_action.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 | import 'package:redux_elementary_test/redux/actions/action_completer_mixin.dart';
3 |
4 | @immutable
5 | class RequestLoadingAction with ActionCompleterMixin {
6 | RequestLoadingAction();
7 | }
8 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/redux/store/dogs_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:fast_immutable_collections/fast_immutable_collections.dart';
3 | import 'package:freezed_annotation/freezed_annotation.dart';
4 |
5 | import '../../model/dog_data.dart';
6 |
7 | part 'dogs_state.freezed.dart';
8 |
9 | @freezed
10 | class DogsState with _$DogsState {
11 | const factory DogsState({
12 | @Default(IListConst([])) IList dogsList,
13 | @Default(null) DioError? error,
14 | }) = _DogsState;
15 | }
16 |
--------------------------------------------------------------------------------
/examples/elementary_redux/lib/services/client.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 |
3 | import '../model/dog_dto.dart';
4 |
5 | class Client {
6 | final Dio _dio;
7 |
8 | const Client(this._dio);
9 |
10 | static const baseUrl = 'https://dog.ceo/api/breeds/image/random';
11 |
12 | Future getDog() async {
13 | final response = await _dio.get