├── .github └── workflows │ └── extend.yml ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── example ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android │ ├── .gitignore │ ├── app │ │ ├── .cxx │ │ │ └── Debug │ │ │ │ └── 6j5w435h │ │ │ │ ├── arm64-v8a │ │ │ │ ├── .cmake │ │ │ │ │ └── api │ │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── query │ │ │ │ │ │ └── client-agp │ │ │ │ │ │ │ ├── cache-v2 │ │ │ │ │ │ │ ├── cmakeFiles-v1 │ │ │ │ │ │ │ └── codemodel-v2 │ │ │ │ │ │ └── reply │ │ │ │ │ │ ├── cache-v2-5bbec6158c41da30fd5d.json │ │ │ │ │ │ ├── cmakeFiles-v1-c4709929967586955b92.json │ │ │ │ │ │ ├── codemodel-v2-50be086f1f44fca70308.json │ │ │ │ │ │ ├── directory-.-Debug-d0094a50bb2071803777.json │ │ │ │ │ │ └── index-2025-04-26T05-59-36-0874.json │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.22.1-g37088a8-dirty │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ ├── CMakeSystem.cmake │ │ │ │ │ │ ├── CompilerIdC │ │ │ │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ │ │ │ └── CMakeCCompilerId.o │ │ │ │ │ │ └── CompilerIdCXX │ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ │ │ │ │ └── CMakeCXXCompilerId.o │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ └── rules.ninja │ │ │ │ ├── additional_project_files.txt │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_file_index.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── configure_fingerprint.bin │ │ │ │ ├── metadata_generation_command.txt │ │ │ │ ├── prefab_config.json │ │ │ │ └── symbol_folder_index.txt │ │ │ │ ├── armeabi-v7a │ │ │ │ ├── .cmake │ │ │ │ │ └── api │ │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── query │ │ │ │ │ │ └── client-agp │ │ │ │ │ │ │ ├── cache-v2 │ │ │ │ │ │ │ ├── cmakeFiles-v1 │ │ │ │ │ │ │ └── codemodel-v2 │ │ │ │ │ │ └── reply │ │ │ │ │ │ ├── cache-v2-feff2e7f4f1332320224.json │ │ │ │ │ │ ├── cmakeFiles-v1-e574abf03195c473ceb5.json │ │ │ │ │ │ ├── codemodel-v2-e3dd562f6a37db4dad24.json │ │ │ │ │ │ ├── directory-.-Debug-d0094a50bb2071803777.json │ │ │ │ │ │ └── index-2025-04-26T05-59-40-0664.json │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.22.1-g37088a8-dirty │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ ├── CMakeSystem.cmake │ │ │ │ │ │ ├── CompilerIdC │ │ │ │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ │ │ │ └── CMakeCCompilerId.o │ │ │ │ │ │ └── CompilerIdCXX │ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ │ │ │ │ └── CMakeCXXCompilerId.o │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ └── rules.ninja │ │ │ │ ├── additional_project_files.txt │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_file_index.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── configure_fingerprint.bin │ │ │ │ ├── metadata_generation_command.txt │ │ │ │ ├── prefab_config.json │ │ │ │ └── symbol_folder_index.txt │ │ │ │ ├── hash_key.txt │ │ │ │ ├── x86 │ │ │ │ ├── .cmake │ │ │ │ │ └── api │ │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── query │ │ │ │ │ │ └── client-agp │ │ │ │ │ │ │ ├── cache-v2 │ │ │ │ │ │ │ ├── cmakeFiles-v1 │ │ │ │ │ │ │ └── codemodel-v2 │ │ │ │ │ │ └── reply │ │ │ │ │ │ ├── cache-v2-1253838793b82a83db8e.json │ │ │ │ │ │ ├── cmakeFiles-v1-3cb2650030d6e3d58c62.json │ │ │ │ │ │ ├── codemodel-v2-7298c50e99a3502463a7.json │ │ │ │ │ │ ├── directory-.-Debug-d0094a50bb2071803777.json │ │ │ │ │ │ └── index-2025-04-26T05-59-43-0770.json │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ │ ├── 3.22.1-g37088a8-dirty │ │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ │ ├── CMakeSystem.cmake │ │ │ │ │ │ ├── CompilerIdC │ │ │ │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ │ │ │ └── CMakeCCompilerId.o │ │ │ │ │ │ └── CompilerIdCXX │ │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ │ │ │ │ └── CMakeCXXCompilerId.o │ │ │ │ │ ├── TargetDirectories.txt │ │ │ │ │ ├── cmake.check_cache │ │ │ │ │ └── rules.ninja │ │ │ │ ├── additional_project_files.txt │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_file_index.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── configure_fingerprint.bin │ │ │ │ ├── metadata_generation_command.txt │ │ │ │ ├── prefab_config.json │ │ │ │ └── symbol_folder_index.txt │ │ │ │ └── x86_64 │ │ │ │ ├── .cmake │ │ │ │ └── api │ │ │ │ │ └── v1 │ │ │ │ │ ├── query │ │ │ │ │ └── client-agp │ │ │ │ │ │ ├── cache-v2 │ │ │ │ │ │ ├── cmakeFiles-v1 │ │ │ │ │ │ └── codemodel-v2 │ │ │ │ │ └── reply │ │ │ │ │ ├── cache-v2-752fcc2b2e9b63d630f4.json │ │ │ │ │ ├── cmakeFiles-v1-2b95bcb9be5496b67dc0.json │ │ │ │ │ ├── codemodel-v2-159010e801d9b69e0931.json │ │ │ │ │ ├── directory-.-Debug-d0094a50bb2071803777.json │ │ │ │ │ └── index-2025-04-26T05-59-46-0835.json │ │ │ │ ├── CMakeCache.txt │ │ │ │ ├── CMakeFiles │ │ │ │ ├── 3.22.1-g37088a8-dirty │ │ │ │ │ ├── CMakeCCompiler.cmake │ │ │ │ │ ├── CMakeCXXCompiler.cmake │ │ │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ │ │ ├── CMakeSystem.cmake │ │ │ │ │ ├── CompilerIdC │ │ │ │ │ │ ├── CMakeCCompilerId.c │ │ │ │ │ │ └── CMakeCCompilerId.o │ │ │ │ │ └── CompilerIdCXX │ │ │ │ │ │ ├── CMakeCXXCompilerId.cpp │ │ │ │ │ │ └── CMakeCXXCompilerId.o │ │ │ │ ├── TargetDirectories.txt │ │ │ │ ├── cmake.check_cache │ │ │ │ └── rules.ninja │ │ │ │ ├── additional_project_files.txt │ │ │ │ ├── android_gradle_build.json │ │ │ │ ├── android_gradle_build_mini.json │ │ │ │ ├── build.ninja │ │ │ │ ├── build_file_index.txt │ │ │ │ ├── cmake_install.cmake │ │ │ │ ├── configure_fingerprint.bin │ │ │ │ ├── metadata_generation_command.txt │ │ │ │ ├── prefab_config.json │ │ │ │ └── symbol_folder_index.txt │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── 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 │ ├── animation_extension_examples.dart │ ├── components │ │ └── ball.dart │ ├── context_extensions_example.dart │ ├── main.dart │ └── widget_extensions_example.dart ├── linux │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ │ ├── CMakeLists.txt │ │ ├── generated_plugin_registrant.cc │ │ ├── generated_plugin_registrant.h │ │ └── generated_plugins.cmake │ └── runner │ │ ├── CMakeLists.txt │ │ ├── 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.lock ├── 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 ├── animations │ ├── animation_extensions.dart │ ├── fade_in_animation_extensions.dart │ ├── list_animation_extensions.dart │ └── shake_animation_extensions.dart ├── colors │ └── global_color_extensions.dart ├── context │ ├── context_extensions.dart │ ├── media_query_context_extensions.dart │ ├── navigator_context_extensions.dart │ ├── platform_context_extensions.dart │ └── theme_context_extensions.dart ├── date_time │ ├── date_time_comparison_extensions.dart │ ├── date_time_formatting_extensions.dart │ └── date_time_manipulation_extensions.dart ├── enum │ ├── currency_direction.dart │ ├── emoji.dart │ └── emoji_category.dart ├── files │ └── file_extensions.dart ├── flutter_extend.dart ├── futures │ ├── future_extensions.dart │ ├── future_iterable_extensions.dart │ └── string_future_extensions.dart ├── generators │ ├── string_generator_extensions.dart │ └── widget_generator_extensions.dart ├── lists │ └── list_extensions.dart ├── number │ ├── number_currency_extensions.dart │ └── number_duration_extensions.dart ├── string │ ├── currency_extensions.dart │ ├── global_string_extensions.dart │ ├── regex_string_extensions.dart │ ├── string_formatter_extensions.dart │ ├── string_transformer_extensions.dart │ └── validation_string_extensions.dart └── widgets │ ├── scaffold_extensions.dart │ ├── text_extensions.dart │ └── widget_extensions.dart ├── pubspec.yaml └── test ├── date_time └── date_time_extensions_test.dart ├── flutter_extend_test.dart ├── generators └── string_generator_extensions_test.dart ├── lists └── list_extensions_test.dart ├── number ├── number_currency_extensions.dart └── number_duration_extensions_test.dart └── string ├── currency_extensions_test.dart ├── global_string_extensions_test.dart ├── regex_string_extensions_test.dart ├── string_transformer_extensions_test.dart └── validation_string_extensions_test.dart /.github/workflows/extend.yml: -------------------------------------------------------------------------------- 1 | name: Secure PR Checks 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - main 7 | - dev 8 | 9 | permissions: 10 | contents: read 11 | pull-requests: write 12 | 13 | jobs: 14 | test: 15 | name: Validate Code & Run Tests 16 | runs-on: ubuntu-latest 17 | 18 | steps: 19 | - name: Clone repository 20 | uses: actions/checkout@v4 21 | - name: Set up Flutter 22 | uses: subosito/flutter-action@v2 23 | with: 24 | flutter-version: 3.27.1 25 | 26 | - name: Flutter Version 27 | run: flutter --version 28 | 29 | - name: Install Dependencies 30 | run: flutter pub get 31 | 32 | - name: Check Formatting 33 | run: dart format --set-exit-if-changed . 34 | 35 | # - name: Run Linter 36 | # run: flutter analyze 37 | 38 | # - name: Check for Outdated Dependencies 39 | # run: dart pub outdated --no-dev 40 | 41 | - name: Run Tests 42 | run: flutter test 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 26 | /pubspec.lock 27 | **/doc/api/ 28 | .dart_tool/ 29 | .flutter-plugins 30 | .flutter-plugins-dependencies 31 | build/ 32 | -------------------------------------------------------------------------------- /.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: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "stable" 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.3 2 | * Added More Regex Extensions 3 | 4 | ## 0.1.2 5 | * Added Future Extensions 6 | * Added New Context Extensions 7 | * Number Duration Extensions have been modified and naming conventions have been restructured. 8 | * Updated README 9 | 10 | ## 0.1.1 11 | * Added New Number Currency Extensions 12 | * Updated README 13 | 14 | ## 0.1.0 15 | * Added New Animation Extensions 16 | * Added New String, Regx Extensions 17 | * Updated README 18 | * Downgraded intl version to 0.19.0 19 | 20 | ## 0.0.6 21 | * Added New List Extensions 22 | * Added New String, Regx Extensions 23 | * Updated README 24 | 25 | ## 0.0.5 26 | * Added Generator Extensions 27 | * Added Future Extensions 28 | * Added List Extensions 29 | * Added more String Extensions 30 | 31 | ## 0.0.4 32 | * Added Widget Extensions 33 | * Updated Package README 34 | 35 | ## 0.0.3 36 | * Added DateTime Extensions 37 | * Updated Package README 38 | 39 | ## 0.0.2 40 | 41 | * Added Context Extensions for BuildContext 42 | * Updated README for more enhanced Docs 43 | 44 | ## 0.0.1 45 | 46 | * First Release 47 | * Added Duration Extension Methods. 48 | * Added String Extension Methods 49 | * Added Widget Extension Methods 50 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # 🚀 Contributing to flutter_extend 2 | 3 | Oh wow, you want to contribute? YOU’RE AWESOME! 🎉 4 | 5 | Before you unleash your inner Flutter wizard, let’s lay down some ground rules—because even chaos needs some structure. 6 | 7 | --- 8 | 9 | ## 🌳 Branching Strategy (a.k.a. "Where Should I Put My Genius Code?") 10 | 11 | - **🚫 NO TOUCHY the `main` branch!** It’s sacred and only updated for releases. 12 | - **✅ ALL pull requests should go to the `dev` branch.** 13 | - If you send a PR to `main`, a cyber duck will personally quack at you. 🦆 14 | 15 | --- 16 | 17 | ## 🛠️ How to Contribute Like a Boss 18 | 19 | 1. **Fork this repo** – Make your own playground. 20 | 2. **Clone it** – Bring the fun to your local machine: 21 | ```bash 22 | git clone https://github.com/KenStarry/flutter_extend.git 23 | cd flutter_extend 24 | ``` 25 | 3. **Set upstream (fancy term, just do it)** 26 | ```bash 27 | git remote add upstream https://github.com/KenStarry/flutter_extend.git 28 | git fetch upstream 29 | ``` 30 | 31 | 4. **Make a new branch from `dev`** - (BEHOLD, THE CHOSEN ONE) 32 | ```bash 33 | git checkout dev 34 | git pull upstream dev 35 | git checkout -b cool-new-feature 36 | ``` 37 | 5. **Code your heart out ❤️** 38 | 39 | 6. **Test stuff** - (Don't break things, we have feelings too) 40 | ```bash 41 | flutter test 42 | ``` 43 | 44 | 7. **Commit like a poet** - Describe your masterpiece 45 | ```bash 46 | dart format . 47 | git add . 48 | git commit -m "feat: Added a mind-blowing new String extension" 49 | ``` 50 | 51 | 8. **Push it real good 🎶** 52 | ```bash 53 | git push origin cool-new-feature 54 | ``` 55 | 56 | 9. **Open a Pull Request to dev** – Then sit back and wait for the magic. 57 | 58 | --- 59 | ## 🤓 Code Rules (a.k.a. "How to Not Make Maintainers Cry") 60 | 61 | - **🧼 Write clean, readable code.** If your code looks like an ancient spell, rewrite it. 62 | - **📝 Document your extensions!** A little love for future devs goes a long way 63 | - **🪡 Keep PRs focused.** No **"fix typo"** + **"rewrite entire package"** combos, please. 64 | 65 | --- 66 | 67 | ## 🔍 PR Review Process 68 | 69 | - We check your code (and your soul). 70 | - If needed, we request changes (but we’ll be nice about it). 71 | - Once approved, it gets merged into `dev`. 72 | - `main` only updates when we make a new release **(BIG BOOM)**. 73 | 74 | --- 75 | 76 | ## 🎤 Final Words 77 | 78 | - **🐛 Found a bug?** Open an issue! 79 | - **💡 Got a wild idea?** Let’s talk before you build a rocket. 80 | - **🍕 Bringing pizza?** Instant merge. 81 | 82 | --- 83 | 84 | _**Thanks for contributing! 🚀✨**_ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 KenStarry 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .build/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | .swiftpm/ 13 | migrate_working_dir/ 14 | 15 | # IntelliJ related 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .idea/ 20 | 21 | # The .vscode folder contains launch configuration and tasks you configure in 22 | # VS Code which you may wish to be included in version control, so this line 23 | # is commented out by default. 24 | #.vscode/ 25 | 26 | # Flutter/Dart/Pub related 27 | **/doc/api/ 28 | **/ios/Flutter/.last_build_id 29 | .dart_tool/ 30 | .flutter-plugins 31 | .flutter-plugins-dependencies 32 | .pub-cache/ 33 | .pub/ 34 | /build/ 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Android Studio will place build artifacts here 43 | /android/app/debug 44 | /android/app/profile 45 | /android/app/release 46 | -------------------------------------------------------------------------------- /example/.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: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 18 | - platform: android 19 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 20 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 21 | - platform: ios 22 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 23 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 24 | - platform: linux 25 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 26 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 27 | - platform: macos 28 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 29 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 30 | - platform: web 31 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 32 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 33 | - platform: windows 34 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 35 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 36 | 37 | # User provided section 38 | 39 | # List of Local paths (relative to this file) that should be 40 | # ignored by the migrate tool. 41 | # 42 | # Files that are not part of the templates will be ignored by default. 43 | unmanaged_files: 44 | - 'lib/main.dart' 45 | - 'ios/Runner.xcodeproj/project.pbxproj' 46 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Flutter Extend Examples 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /example/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at https://dart.dev/lints. 17 | # 18 | # Instead of disabling a lint rule for the entire project in the 19 | # section below, it can also be suppressed for a single line of code 20 | # or a specific dart file by using the `// ignore: name_of_lint` and 21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 22 | # producing the lint. 23 | rules: 24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 26 | 27 | # Additional information about this file can be found at 28 | # https://dart.dev/guides/language/analysis-options 29 | -------------------------------------------------------------------------------- /example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/to/reference-keystore 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-50be086f1f44fca70308.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations" : 3 | [ 4 | { 5 | "directories" : 6 | [ 7 | { 8 | "build" : ".", 9 | "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", 10 | "minimumCMakeVersion" : 11 | { 12 | "string" : "3.6.0" 13 | }, 14 | "projectIndex" : 0, 15 | "source" : "." 16 | } 17 | ], 18 | "name" : "Debug", 19 | "projects" : 20 | [ 21 | { 22 | "directoryIndexes" : 23 | [ 24 | 0 25 | ], 26 | "name" : "Project" 27 | } 28 | ], 29 | "targets" : [] 30 | } 31 | ], 32 | "kind" : "codemodel", 33 | "paths" : 34 | { 35 | "build" : "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a", 36 | "source" : "C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy" 37 | }, 38 | "version" : 39 | { 40 | "major" : 2, 41 | "minor" : 3 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json: -------------------------------------------------------------------------------- 1 | { 2 | "backtraceGraph" : 3 | { 4 | "commands" : [], 5 | "files" : [], 6 | "nodes" : [] 7 | }, 8 | "installers" : [], 9 | "paths" : 10 | { 11 | "build" : ".", 12 | "source" : "." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/.cmake/api/v1/reply/index-2025-04-26T05-59-36-0874.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake" : 3 | { 4 | "generator" : 5 | { 6 | "multiConfig" : false, 7 | "name" : "Ninja" 8 | }, 9 | "paths" : 10 | { 11 | "cmake" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake.exe", 12 | "cpack" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cpack.exe", 13 | "ctest" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ctest.exe", 14 | "root" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22" 15 | }, 16 | "version" : 17 | { 18 | "isDirty" : true, 19 | "major" : 3, 20 | "minor" : 22, 21 | "patch" : 1, 22 | "string" : "3.22.1-g37088a8-dirty", 23 | "suffix" : "g37088a8" 24 | } 25 | }, 26 | "objects" : 27 | [ 28 | { 29 | "jsonFile" : "codemodel-v2-50be086f1f44fca70308.json", 30 | "kind" : "codemodel", 31 | "version" : 32 | { 33 | "major" : 2, 34 | "minor" : 3 35 | } 36 | }, 37 | { 38 | "jsonFile" : "cache-v2-5bbec6158c41da30fd5d.json", 39 | "kind" : "cache", 40 | "version" : 41 | { 42 | "major" : 2, 43 | "minor" : 0 44 | } 45 | }, 46 | { 47 | "jsonFile" : "cmakeFiles-v1-c4709929967586955b92.json", 48 | "kind" : "cmakeFiles", 49 | "version" : 50 | { 51 | "major" : 1, 52 | "minor" : 0 53 | } 54 | } 55 | ], 56 | "reply" : 57 | { 58 | "client-agp" : 59 | { 60 | "cache-v2" : 61 | { 62 | "jsonFile" : "cache-v2-5bbec6158c41da30fd5d.json", 63 | "kind" : "cache", 64 | "version" : 65 | { 66 | "major" : 2, 67 | "minor" : 0 68 | } 69 | }, 70 | "cmakeFiles-v1" : 71 | { 72 | "jsonFile" : "cmakeFiles-v1-c4709929967586955b92.json", 73 | "kind" : "cmakeFiles", 74 | "version" : 75 | { 76 | "major" : 1, 77 | "minor" : 0 78 | } 79 | }, 80 | "codemodel-v2" : 81 | { 82 | "jsonFile" : "codemodel-v2-50be086f1f44fca70308.json", 83 | "kind" : "codemodel", 84 | "version" : 85 | { 86 | "major" : 2, 87 | "minor" : 3 88 | } 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") 2 | set(CMAKE_HOST_SYSTEM_NAME "Windows") 3 | set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") 5 | 6 | include("C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake") 7 | 8 | set(CMAKE_SYSTEM "Android-1") 9 | set(CMAKE_SYSTEM_NAME "Android") 10 | set(CMAKE_SYSTEM_VERSION "1") 11 | set(CMAKE_SYSTEM_PROCESSOR "aarch64") 12 | 13 | set(CMAKE_CROSSCOMPILING "TRUE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/TargetDirectories.txt: -------------------------------------------------------------------------------- 1 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/edit_cache.dir 2 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/rebuild_cache.dir 3 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/CMakeFiles/rules.ninja: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Ninja" Generator, CMake Version 3.22 3 | 4 | # This file contains all the rules used to get the outputs files 5 | # built from the input files. 6 | # It is included in the main 'build.ninja'. 7 | 8 | # ============================================================================= 9 | # Project: Project 10 | # Configurations: Debug 11 | # ============================================================================= 12 | # ============================================================================= 13 | 14 | ############################################# 15 | # Rule for running custom commands. 16 | 17 | rule CUSTOM_COMMAND 18 | command = $COMMAND 19 | description = $DESC 20 | 21 | 22 | ############################################# 23 | # Rule for re-running cmake. 24 | 25 | rule RERUN_CMAKE 26 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\arm64-v8a 27 | description = Re-running CMake... 28 | generator = 1 29 | 30 | 31 | ############################################# 32 | # Rule for cleaning all built files. 33 | 34 | rule CLEAN 35 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS 36 | description = Cleaning all built files... 37 | 38 | 39 | ############################################# 40 | # Rule for printing all primary targets available. 41 | 42 | rule HELP 43 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe -t targets 44 | description = All primary targets available: 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/additional_project_files.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/additional_project_files.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/android_gradle_build.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\arm64-v8a", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\arm64-v8a", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {}, 20 | "toolchains": { 21 | "toolchain": { 22 | "cCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", 23 | "cppCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" 24 | } 25 | }, 26 | "cFileExtensions": [], 27 | "cppFileExtensions": [] 28 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/android_gradle_build_mini.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\arm64-v8a", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\arm64-v8a", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {} 20 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/build_file_index.txt: -------------------------------------------------------------------------------- 1 | C:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/cmake_install.cmake: -------------------------------------------------------------------------------- 1 | # Install script for directory: C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy 2 | 3 | # Set the install prefix 4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX) 5 | set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Project") 6 | endif() 7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 8 | 9 | # Set the install configuration name. 10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) 11 | if(BUILD_TYPE) 12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" 13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") 14 | else() 15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug") 16 | endif() 17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") 18 | endif() 19 | 20 | # Set the component getting installed. 21 | if(NOT CMAKE_INSTALL_COMPONENT) 22 | if(COMPONENT) 23 | message(STATUS "Install component: \"${COMPONENT}\"") 24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") 25 | else() 26 | set(CMAKE_INSTALL_COMPONENT) 27 | endif() 28 | endif() 29 | 30 | # Install shared libraries without execute permission? 31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) 32 | set(CMAKE_INSTALL_SO_NO_EXE "0") 33 | endif() 34 | 35 | # Is this installation the result of a crosscompile? 36 | if(NOT DEFINED CMAKE_CROSSCOMPILING) 37 | set(CMAKE_CROSSCOMPILING "TRUE") 38 | endif() 39 | 40 | # Set default install directory permissions. 41 | if(NOT DEFINED CMAKE_OBJDUMP) 42 | set(CMAKE_OBJDUMP "C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") 43 | endif() 44 | 45 | if(CMAKE_INSTALL_COMPONENT) 46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") 47 | else() 48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") 49 | endif() 50 | 51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT 52 | "${CMAKE_INSTALL_MANIFEST_FILES}") 53 | file(WRITE "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/${CMAKE_INSTALL_MANIFEST}" 54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}") 55 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/configure_fingerprint.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/configure_fingerprint.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/metadata_generation_command.txt: -------------------------------------------------------------------------------- 1 | -HC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy 2 | -DCMAKE_SYSTEM_NAME=Android 3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 4 | -DCMAKE_SYSTEM_VERSION=21 5 | -DANDROID_PLATFORM=android-21 6 | -DANDROID_ABI=arm64-v8a 7 | -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a 8 | -DANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 9 | -DCMAKE_ANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 10 | -DCMAKE_TOOLCHAIN_FILE=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264\build\cmake\android.toolchain.cmake 11 | -DCMAKE_MAKE_PROGRAM=C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe 12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\arm64-v8a 13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\arm64-v8a 14 | -DCMAKE_BUILD_TYPE=Debug 15 | -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\arm64-v8a 16 | -GNinja 17 | -Wno-dev 18 | --no-warn-unused-cli 19 | Build command args: [] 20 | Version: 2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/prefab_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": false, 3 | "packages": [] 4 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/arm64-v8a/symbol_folder_index.txt: -------------------------------------------------------------------------------- 1 | D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\arm64-v8a -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-e3dd562f6a37db4dad24.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations" : 3 | [ 4 | { 5 | "directories" : 6 | [ 7 | { 8 | "build" : ".", 9 | "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", 10 | "minimumCMakeVersion" : 11 | { 12 | "string" : "3.6.0" 13 | }, 14 | "projectIndex" : 0, 15 | "source" : "." 16 | } 17 | ], 18 | "name" : "Debug", 19 | "projects" : 20 | [ 21 | { 22 | "directoryIndexes" : 23 | [ 24 | 0 25 | ], 26 | "name" : "Project" 27 | } 28 | ], 29 | "targets" : [] 30 | } 31 | ], 32 | "kind" : "codemodel", 33 | "paths" : 34 | { 35 | "build" : "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a", 36 | "source" : "C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy" 37 | }, 38 | "version" : 39 | { 40 | "major" : 2, 41 | "minor" : 3 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json: -------------------------------------------------------------------------------- 1 | { 2 | "backtraceGraph" : 3 | { 4 | "commands" : [], 5 | "files" : [], 6 | "nodes" : [] 7 | }, 8 | "installers" : [], 9 | "paths" : 10 | { 11 | "build" : ".", 12 | "source" : "." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/.cmake/api/v1/reply/index-2025-04-26T05-59-40-0664.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake" : 3 | { 4 | "generator" : 5 | { 6 | "multiConfig" : false, 7 | "name" : "Ninja" 8 | }, 9 | "paths" : 10 | { 11 | "cmake" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake.exe", 12 | "cpack" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cpack.exe", 13 | "ctest" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ctest.exe", 14 | "root" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22" 15 | }, 16 | "version" : 17 | { 18 | "isDirty" : true, 19 | "major" : 3, 20 | "minor" : 22, 21 | "patch" : 1, 22 | "string" : "3.22.1-g37088a8-dirty", 23 | "suffix" : "g37088a8" 24 | } 25 | }, 26 | "objects" : 27 | [ 28 | { 29 | "jsonFile" : "codemodel-v2-e3dd562f6a37db4dad24.json", 30 | "kind" : "codemodel", 31 | "version" : 32 | { 33 | "major" : 2, 34 | "minor" : 3 35 | } 36 | }, 37 | { 38 | "jsonFile" : "cache-v2-feff2e7f4f1332320224.json", 39 | "kind" : "cache", 40 | "version" : 41 | { 42 | "major" : 2, 43 | "minor" : 0 44 | } 45 | }, 46 | { 47 | "jsonFile" : "cmakeFiles-v1-e574abf03195c473ceb5.json", 48 | "kind" : "cmakeFiles", 49 | "version" : 50 | { 51 | "major" : 1, 52 | "minor" : 0 53 | } 54 | } 55 | ], 56 | "reply" : 57 | { 58 | "client-agp" : 59 | { 60 | "cache-v2" : 61 | { 62 | "jsonFile" : "cache-v2-feff2e7f4f1332320224.json", 63 | "kind" : "cache", 64 | "version" : 65 | { 66 | "major" : 2, 67 | "minor" : 0 68 | } 69 | }, 70 | "cmakeFiles-v1" : 71 | { 72 | "jsonFile" : "cmakeFiles-v1-e574abf03195c473ceb5.json", 73 | "kind" : "cmakeFiles", 74 | "version" : 75 | { 76 | "major" : 1, 77 | "minor" : 0 78 | } 79 | }, 80 | "codemodel-v2" : 81 | { 82 | "jsonFile" : "codemodel-v2-e3dd562f6a37db4dad24.json", 83 | "kind" : "codemodel", 84 | "version" : 85 | { 86 | "major" : 2, 87 | "minor" : 3 88 | } 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") 2 | set(CMAKE_HOST_SYSTEM_NAME "Windows") 3 | set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") 5 | 6 | include("C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake") 7 | 8 | set(CMAKE_SYSTEM "Android-1") 9 | set(CMAKE_SYSTEM_NAME "Android") 10 | set(CMAKE_SYSTEM_VERSION "1") 11 | set(CMAKE_SYSTEM_PROCESSOR "armv7-a") 12 | 13 | set(CMAKE_CROSSCOMPILING "TRUE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/TargetDirectories.txt: -------------------------------------------------------------------------------- 1 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/edit_cache.dir 2 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/rebuild_cache.dir 3 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/CMakeFiles/rules.ninja: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Ninja" Generator, CMake Version 3.22 3 | 4 | # This file contains all the rules used to get the outputs files 5 | # built from the input files. 6 | # It is included in the main 'build.ninja'. 7 | 8 | # ============================================================================= 9 | # Project: Project 10 | # Configurations: Debug 11 | # ============================================================================= 12 | # ============================================================================= 13 | 14 | ############################################# 15 | # Rule for running custom commands. 16 | 17 | rule CUSTOM_COMMAND 18 | command = $COMMAND 19 | description = $DESC 20 | 21 | 22 | ############################################# 23 | # Rule for re-running cmake. 24 | 25 | rule RERUN_CMAKE 26 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\armeabi-v7a 27 | description = Re-running CMake... 28 | generator = 1 29 | 30 | 31 | ############################################# 32 | # Rule for cleaning all built files. 33 | 34 | rule CLEAN 35 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS 36 | description = Cleaning all built files... 37 | 38 | 39 | ############################################# 40 | # Rule for printing all primary targets available. 41 | 42 | rule HELP 43 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe -t targets 44 | description = All primary targets available: 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/additional_project_files.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/additional_project_files.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/android_gradle_build.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\armeabi-v7a", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\armeabi-v7a", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {}, 20 | "toolchains": { 21 | "toolchain": { 22 | "cCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", 23 | "cppCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" 24 | } 25 | }, 26 | "cFileExtensions": [], 27 | "cppFileExtensions": [] 28 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/android_gradle_build_mini.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\armeabi-v7a", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\armeabi-v7a", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {} 20 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/build_file_index.txt: -------------------------------------------------------------------------------- 1 | C:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/cmake_install.cmake: -------------------------------------------------------------------------------- 1 | # Install script for directory: C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy 2 | 3 | # Set the install prefix 4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX) 5 | set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Project") 6 | endif() 7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 8 | 9 | # Set the install configuration name. 10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) 11 | if(BUILD_TYPE) 12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" 13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") 14 | else() 15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug") 16 | endif() 17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") 18 | endif() 19 | 20 | # Set the component getting installed. 21 | if(NOT CMAKE_INSTALL_COMPONENT) 22 | if(COMPONENT) 23 | message(STATUS "Install component: \"${COMPONENT}\"") 24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") 25 | else() 26 | set(CMAKE_INSTALL_COMPONENT) 27 | endif() 28 | endif() 29 | 30 | # Install shared libraries without execute permission? 31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) 32 | set(CMAKE_INSTALL_SO_NO_EXE "0") 33 | endif() 34 | 35 | # Is this installation the result of a crosscompile? 36 | if(NOT DEFINED CMAKE_CROSSCOMPILING) 37 | set(CMAKE_CROSSCOMPILING "TRUE") 38 | endif() 39 | 40 | # Set default install directory permissions. 41 | if(NOT DEFINED CMAKE_OBJDUMP) 42 | set(CMAKE_OBJDUMP "C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") 43 | endif() 44 | 45 | if(CMAKE_INSTALL_COMPONENT) 46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") 47 | else() 48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") 49 | endif() 50 | 51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT 52 | "${CMAKE_INSTALL_MANIFEST_FILES}") 53 | file(WRITE "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}" 54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}") 55 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/configure_fingerprint.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/configure_fingerprint.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/metadata_generation_command.txt: -------------------------------------------------------------------------------- 1 | -HC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy 2 | -DCMAKE_SYSTEM_NAME=Android 3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 4 | -DCMAKE_SYSTEM_VERSION=21 5 | -DANDROID_PLATFORM=android-21 6 | -DANDROID_ABI=armeabi-v7a 7 | -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a 8 | -DANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 9 | -DCMAKE_ANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 10 | -DCMAKE_TOOLCHAIN_FILE=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264\build\cmake\android.toolchain.cmake 11 | -DCMAKE_MAKE_PROGRAM=C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe 12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\armeabi-v7a 13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\armeabi-v7a 14 | -DCMAKE_BUILD_TYPE=Debug 15 | -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\armeabi-v7a 16 | -GNinja 17 | -Wno-dev 18 | --no-warn-unused-cli 19 | Build command args: [] 20 | Version: 2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/prefab_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": false, 3 | "packages": [] 4 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/armeabi-v7a/symbol_folder_index.txt: -------------------------------------------------------------------------------- 1 | D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\armeabi-v7a -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/hash_key.txt: -------------------------------------------------------------------------------- 1 | # Values used to calculate the hash in this folder name. 2 | # Should not depend on the absolute path of the project itself. 3 | # - AGP: 8.1.0. 4 | # - $NDK is the path to NDK 26.3.11579264. 5 | # - $PROJECT is the path to the parent folder of the root Gradle build file. 6 | # - $ABI is the ABI to be built with. The specific value doesn't contribute to the value of the hash. 7 | # - $HASH is the hash value computed from this text. 8 | # - $CMAKE is the path to CMake 3.22.1. 9 | # - $NINJA is the path to Ninja. 10 | -HC:/src/flutter/packages/flutter_tools/gradle/src/main/groovy 11 | -DCMAKE_SYSTEM_NAME=Android 12 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 13 | -DCMAKE_SYSTEM_VERSION=21 14 | -DANDROID_PLATFORM=android-21 15 | -DANDROID_ABI=$ABI 16 | -DCMAKE_ANDROID_ARCH_ABI=$ABI 17 | -DANDROID_NDK=$NDK 18 | -DCMAKE_ANDROID_NDK=$NDK 19 | -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake 20 | -DCMAKE_MAKE_PROGRAM=$NINJA 21 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:/Programming/Flutter/Projects/flutter_extend/example/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI 22 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:/Programming/Flutter/Projects/flutter_extend/example/build/app/intermediates/cxx/Debug/$HASH/obj/$ABI 23 | -DCMAKE_BUILD_TYPE=Debug 24 | -B$PROJECT/app/.cxx/Debug/$HASH/$ABI 25 | -GNinja 26 | -Wno-dev 27 | --no-warn-unused-cli -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/cache-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/cache-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/codemodel-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/query/client-agp/codemodel-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/reply/codemodel-v2-7298c50e99a3502463a7.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations" : 3 | [ 4 | { 5 | "directories" : 6 | [ 7 | { 8 | "build" : ".", 9 | "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", 10 | "minimumCMakeVersion" : 11 | { 12 | "string" : "3.6.0" 13 | }, 14 | "projectIndex" : 0, 15 | "source" : "." 16 | } 17 | ], 18 | "name" : "Debug", 19 | "projects" : 20 | [ 21 | { 22 | "directoryIndexes" : 23 | [ 24 | 0 25 | ], 26 | "name" : "Project" 27 | } 28 | ], 29 | "targets" : [] 30 | } 31 | ], 32 | "kind" : "codemodel", 33 | "paths" : 34 | { 35 | "build" : "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86", 36 | "source" : "C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy" 37 | }, 38 | "version" : 39 | { 40 | "major" : 2, 41 | "minor" : 3 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json: -------------------------------------------------------------------------------- 1 | { 2 | "backtraceGraph" : 3 | { 4 | "commands" : [], 5 | "files" : [], 6 | "nodes" : [] 7 | }, 8 | "installers" : [], 9 | "paths" : 10 | { 11 | "build" : ".", 12 | "source" : "." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/.cmake/api/v1/reply/index-2025-04-26T05-59-43-0770.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake" : 3 | { 4 | "generator" : 5 | { 6 | "multiConfig" : false, 7 | "name" : "Ninja" 8 | }, 9 | "paths" : 10 | { 11 | "cmake" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake.exe", 12 | "cpack" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cpack.exe", 13 | "ctest" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ctest.exe", 14 | "root" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22" 15 | }, 16 | "version" : 17 | { 18 | "isDirty" : true, 19 | "major" : 3, 20 | "minor" : 22, 21 | "patch" : 1, 22 | "string" : "3.22.1-g37088a8-dirty", 23 | "suffix" : "g37088a8" 24 | } 25 | }, 26 | "objects" : 27 | [ 28 | { 29 | "jsonFile" : "codemodel-v2-7298c50e99a3502463a7.json", 30 | "kind" : "codemodel", 31 | "version" : 32 | { 33 | "major" : 2, 34 | "minor" : 3 35 | } 36 | }, 37 | { 38 | "jsonFile" : "cache-v2-1253838793b82a83db8e.json", 39 | "kind" : "cache", 40 | "version" : 41 | { 42 | "major" : 2, 43 | "minor" : 0 44 | } 45 | }, 46 | { 47 | "jsonFile" : "cmakeFiles-v1-3cb2650030d6e3d58c62.json", 48 | "kind" : "cmakeFiles", 49 | "version" : 50 | { 51 | "major" : 1, 52 | "minor" : 0 53 | } 54 | } 55 | ], 56 | "reply" : 57 | { 58 | "client-agp" : 59 | { 60 | "cache-v2" : 61 | { 62 | "jsonFile" : "cache-v2-1253838793b82a83db8e.json", 63 | "kind" : "cache", 64 | "version" : 65 | { 66 | "major" : 2, 67 | "minor" : 0 68 | } 69 | }, 70 | "cmakeFiles-v1" : 71 | { 72 | "jsonFile" : "cmakeFiles-v1-3cb2650030d6e3d58c62.json", 73 | "kind" : "cmakeFiles", 74 | "version" : 75 | { 76 | "major" : 1, 77 | "minor" : 0 78 | } 79 | }, 80 | "codemodel-v2" : 81 | { 82 | "jsonFile" : "codemodel-v2-7298c50e99a3502463a7.json", 83 | "kind" : "codemodel", 84 | "version" : 85 | { 86 | "major" : 2, 87 | "minor" : 3 88 | } 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") 2 | set(CMAKE_HOST_SYSTEM_NAME "Windows") 3 | set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") 5 | 6 | include("C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake") 7 | 8 | set(CMAKE_SYSTEM "Android-1") 9 | set(CMAKE_SYSTEM_NAME "Android") 10 | set(CMAKE_SYSTEM_VERSION "1") 11 | set(CMAKE_SYSTEM_PROCESSOR "i686") 12 | 13 | set(CMAKE_CROSSCOMPILING "TRUE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/TargetDirectories.txt: -------------------------------------------------------------------------------- 1 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/edit_cache.dir 2 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/rebuild_cache.dir 3 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/CMakeFiles/rules.ninja: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Ninja" Generator, CMake Version 3.22 3 | 4 | # This file contains all the rules used to get the outputs files 5 | # built from the input files. 6 | # It is included in the main 'build.ninja'. 7 | 8 | # ============================================================================= 9 | # Project: Project 10 | # Configurations: Debug 11 | # ============================================================================= 12 | # ============================================================================= 13 | 14 | ############################################# 15 | # Rule for running custom commands. 16 | 17 | rule CUSTOM_COMMAND 18 | command = $COMMAND 19 | description = $DESC 20 | 21 | 22 | ############################################# 23 | # Rule for re-running cmake. 24 | 25 | rule RERUN_CMAKE 26 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\x86 27 | description = Re-running CMake... 28 | generator = 1 29 | 30 | 31 | ############################################# 32 | # Rule for cleaning all built files. 33 | 34 | rule CLEAN 35 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS 36 | description = Cleaning all built files... 37 | 38 | 39 | ############################################# 40 | # Rule for printing all primary targets available. 41 | 42 | rule HELP 43 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe -t targets 44 | description = All primary targets available: 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/additional_project_files.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/additional_project_files.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/android_gradle_build.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {}, 20 | "toolchains": { 21 | "toolchain": { 22 | "cCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", 23 | "cppCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" 24 | } 25 | }, 26 | "cFileExtensions": [], 27 | "cppFileExtensions": [] 28 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/android_gradle_build_mini.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {} 20 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/build_file_index.txt: -------------------------------------------------------------------------------- 1 | C:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/cmake_install.cmake: -------------------------------------------------------------------------------- 1 | # Install script for directory: C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy 2 | 3 | # Set the install prefix 4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX) 5 | set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Project") 6 | endif() 7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 8 | 9 | # Set the install configuration name. 10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) 11 | if(BUILD_TYPE) 12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" 13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") 14 | else() 15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug") 16 | endif() 17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") 18 | endif() 19 | 20 | # Set the component getting installed. 21 | if(NOT CMAKE_INSTALL_COMPONENT) 22 | if(COMPONENT) 23 | message(STATUS "Install component: \"${COMPONENT}\"") 24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") 25 | else() 26 | set(CMAKE_INSTALL_COMPONENT) 27 | endif() 28 | endif() 29 | 30 | # Install shared libraries without execute permission? 31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) 32 | set(CMAKE_INSTALL_SO_NO_EXE "0") 33 | endif() 34 | 35 | # Is this installation the result of a crosscompile? 36 | if(NOT DEFINED CMAKE_CROSSCOMPILING) 37 | set(CMAKE_CROSSCOMPILING "TRUE") 38 | endif() 39 | 40 | # Set default install directory permissions. 41 | if(NOT DEFINED CMAKE_OBJDUMP) 42 | set(CMAKE_OBJDUMP "C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") 43 | endif() 44 | 45 | if(CMAKE_INSTALL_COMPONENT) 46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") 47 | else() 48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") 49 | endif() 50 | 51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT 52 | "${CMAKE_INSTALL_MANIFEST_FILES}") 53 | file(WRITE "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86/${CMAKE_INSTALL_MANIFEST}" 54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}") 55 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/configure_fingerprint.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86/configure_fingerprint.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/metadata_generation_command.txt: -------------------------------------------------------------------------------- 1 | -HC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy 2 | -DCMAKE_SYSTEM_NAME=Android 3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 4 | -DCMAKE_SYSTEM_VERSION=21 5 | -DANDROID_PLATFORM=android-21 6 | -DANDROID_ABI=x86 7 | -DCMAKE_ANDROID_ARCH_ABI=x86 8 | -DANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 9 | -DCMAKE_ANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 10 | -DCMAKE_TOOLCHAIN_FILE=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264\build\cmake\android.toolchain.cmake 11 | -DCMAKE_MAKE_PROGRAM=C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe 12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86 13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86 14 | -DCMAKE_BUILD_TYPE=Debug 15 | -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\x86 16 | -GNinja 17 | -Wno-dev 18 | --no-warn-unused-cli 19 | Build command args: [] 20 | Version: 2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/prefab_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": false, 3 | "packages": [] 4 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86/symbol_folder_index.txt: -------------------------------------------------------------------------------- 1 | D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/cache-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/cache-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/reply/codemodel-v2-159010e801d9b69e0931.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations" : 3 | [ 4 | { 5 | "directories" : 6 | [ 7 | { 8 | "build" : ".", 9 | "jsonFile" : "directory-.-Debug-d0094a50bb2071803777.json", 10 | "minimumCMakeVersion" : 11 | { 12 | "string" : "3.6.0" 13 | }, 14 | "projectIndex" : 0, 15 | "source" : "." 16 | } 17 | ], 18 | "name" : "Debug", 19 | "projects" : 20 | [ 21 | { 22 | "directoryIndexes" : 23 | [ 24 | 0 25 | ], 26 | "name" : "Project" 27 | } 28 | ], 29 | "targets" : [] 30 | } 31 | ], 32 | "kind" : "codemodel", 33 | "paths" : 34 | { 35 | "build" : "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86_64", 36 | "source" : "C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy" 37 | }, 38 | "version" : 39 | { 40 | "major" : 2, 41 | "minor" : 3 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/reply/directory-.-Debug-d0094a50bb2071803777.json: -------------------------------------------------------------------------------- 1 | { 2 | "backtraceGraph" : 3 | { 4 | "commands" : [], 5 | "files" : [], 6 | "nodes" : [] 7 | }, 8 | "installers" : [], 9 | "paths" : 10 | { 11 | "build" : ".", 12 | "source" : "." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/.cmake/api/v1/reply/index-2025-04-26T05-59-46-0835.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake" : 3 | { 4 | "generator" : 5 | { 6 | "multiConfig" : false, 7 | "name" : "Ninja" 8 | }, 9 | "paths" : 10 | { 11 | "cmake" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake.exe", 12 | "cpack" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cpack.exe", 13 | "ctest" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ctest.exe", 14 | "root" : "C:/Users/kenne/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22" 15 | }, 16 | "version" : 17 | { 18 | "isDirty" : true, 19 | "major" : 3, 20 | "minor" : 22, 21 | "patch" : 1, 22 | "string" : "3.22.1-g37088a8-dirty", 23 | "suffix" : "g37088a8" 24 | } 25 | }, 26 | "objects" : 27 | [ 28 | { 29 | "jsonFile" : "codemodel-v2-159010e801d9b69e0931.json", 30 | "kind" : "codemodel", 31 | "version" : 32 | { 33 | "major" : 2, 34 | "minor" : 3 35 | } 36 | }, 37 | { 38 | "jsonFile" : "cache-v2-752fcc2b2e9b63d630f4.json", 39 | "kind" : "cache", 40 | "version" : 41 | { 42 | "major" : 2, 43 | "minor" : 0 44 | } 45 | }, 46 | { 47 | "jsonFile" : "cmakeFiles-v1-2b95bcb9be5496b67dc0.json", 48 | "kind" : "cmakeFiles", 49 | "version" : 50 | { 51 | "major" : 1, 52 | "minor" : 0 53 | } 54 | } 55 | ], 56 | "reply" : 57 | { 58 | "client-agp" : 59 | { 60 | "cache-v2" : 61 | { 62 | "jsonFile" : "cache-v2-752fcc2b2e9b63d630f4.json", 63 | "kind" : "cache", 64 | "version" : 65 | { 66 | "major" : 2, 67 | "minor" : 0 68 | } 69 | }, 70 | "cmakeFiles-v1" : 71 | { 72 | "jsonFile" : "cmakeFiles-v1-2b95bcb9be5496b67dc0.json", 73 | "kind" : "cmakeFiles", 74 | "version" : 75 | { 76 | "major" : 1, 77 | "minor" : 0 78 | } 79 | }, 80 | "codemodel-v2" : 81 | { 82 | "jsonFile" : "codemodel-v2-159010e801d9b69e0931.json", 83 | "kind" : "codemodel", 84 | "version" : 85 | { 86 | "major" : 2, 87 | "minor" : 3 88 | } 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") 2 | set(CMAKE_HOST_SYSTEM_NAME "Windows") 3 | set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") 5 | 6 | include("C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake") 7 | 8 | set(CMAKE_SYSTEM "Android-1") 9 | set(CMAKE_SYSTEM_NAME "Android") 10 | set(CMAKE_SYSTEM_VERSION "1") 11 | set(CMAKE_SYSTEM_PROCESSOR "x86_64") 12 | 13 | set(CMAKE_CROSSCOMPILING "TRUE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdC/CMakeCCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/3.22.1-g37088a8-dirty/CompilerIdCXX/CMakeCXXCompilerId.o -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/TargetDirectories.txt: -------------------------------------------------------------------------------- 1 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/edit_cache.dir 2 | D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/rebuild_cache.dir 3 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/CMakeFiles/rules.ninja: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Ninja" Generator, CMake Version 3.22 3 | 4 | # This file contains all the rules used to get the outputs files 5 | # built from the input files. 6 | # It is included in the main 'build.ninja'. 7 | 8 | # ============================================================================= 9 | # Project: Project 10 | # Configurations: Debug 11 | # ============================================================================= 12 | # ============================================================================= 13 | 14 | ############################################# 15 | # Rule for running custom commands. 16 | 17 | rule CUSTOM_COMMAND 18 | command = $COMMAND 19 | description = $DESC 20 | 21 | 22 | ############################################# 23 | # Rule for re-running cmake. 24 | 25 | rule RERUN_CMAKE 26 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe --regenerate-during-build -SC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\x86_64 27 | description = Re-running CMake... 28 | generator = 1 29 | 30 | 31 | ############################################# 32 | # Rule for cleaning all built files. 33 | 34 | rule CLEAN 35 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe $FILE_ARG -t clean $TARGETS 36 | description = Cleaning all built files... 37 | 38 | 39 | ############################################# 40 | # Rule for printing all primary targets available. 41 | 42 | rule HELP 43 | command = C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe -t targets 44 | description = All primary targets available: 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/additional_project_files.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/additional_project_files.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/android_gradle_build.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86_64", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86_64", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {}, 20 | "toolchains": { 21 | "toolchain": { 22 | "cCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe", 23 | "cppCompilerExecutable": "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\ndk\\26.3.11579264\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe" 24 | } 25 | }, 26 | "cFileExtensions": [], 27 | "cppFileExtensions": [] 28 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/android_gradle_build_mini.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildFiles": [ 3 | "C:\\src\\flutter\\packages\\flutter_tools\\gradle\\src\\main\\groovy\\CMakeLists.txt" 4 | ], 5 | "cleanCommandsComponents": [ 6 | [ 7 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 8 | "-C", 9 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86_64", 10 | "clean" 11 | ] 12 | ], 13 | "buildTargetsCommandComponents": [ 14 | "C:\\Users\\kenne\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe", 15 | "-C", 16 | "D:\\Programming\\Flutter\\Projects\\flutter_extend\\example\\android\\app\\.cxx\\Debug\\6j5w435h\\x86_64", 17 | "{LIST_OF_TARGETS_TO_BUILD}" 18 | ], 19 | "libraries": {} 20 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/build_file_index.txt: -------------------------------------------------------------------------------- 1 | C:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/cmake_install.cmake: -------------------------------------------------------------------------------- 1 | # Install script for directory: C:/src/flutter/packages/flutter_tools/gradle/src/main/groovy 2 | 3 | # Set the install prefix 4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX) 5 | set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Project") 6 | endif() 7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 8 | 9 | # Set the install configuration name. 10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) 11 | if(BUILD_TYPE) 12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" 13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") 14 | else() 15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug") 16 | endif() 17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") 18 | endif() 19 | 20 | # Set the component getting installed. 21 | if(NOT CMAKE_INSTALL_COMPONENT) 22 | if(COMPONENT) 23 | message(STATUS "Install component: \"${COMPONENT}\"") 24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") 25 | else() 26 | set(CMAKE_INSTALL_COMPONENT) 27 | endif() 28 | endif() 29 | 30 | # Install shared libraries without execute permission? 31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) 32 | set(CMAKE_INSTALL_SO_NO_EXE "0") 33 | endif() 34 | 35 | # Is this installation the result of a crosscompile? 36 | if(NOT DEFINED CMAKE_CROSSCOMPILING) 37 | set(CMAKE_CROSSCOMPILING "TRUE") 38 | endif() 39 | 40 | # Set default install directory permissions. 41 | if(NOT DEFINED CMAKE_OBJDUMP) 42 | set(CMAKE_OBJDUMP "C:/Users/kenne/AppData/Local/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-objdump.exe") 43 | endif() 44 | 45 | if(CMAKE_INSTALL_COMPONENT) 46 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") 47 | else() 48 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") 49 | endif() 50 | 51 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT 52 | "${CMAKE_INSTALL_MANIFEST_FILES}") 53 | file(WRITE "D:/Programming/Flutter/Projects/flutter_extend/example/android/app/.cxx/Debug/6j5w435h/x86_64/${CMAKE_INSTALL_MANIFEST}" 54 | "${CMAKE_INSTALL_MANIFEST_CONTENT}") 55 | -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/configure_fingerprint.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/.cxx/Debug/6j5w435h/x86_64/configure_fingerprint.bin -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/metadata_generation_command.txt: -------------------------------------------------------------------------------- 1 | -HC:\src\flutter\packages\flutter_tools\gradle\src\main\groovy 2 | -DCMAKE_SYSTEM_NAME=Android 3 | -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 4 | -DCMAKE_SYSTEM_VERSION=21 5 | -DANDROID_PLATFORM=android-21 6 | -DANDROID_ABI=x86_64 7 | -DCMAKE_ANDROID_ARCH_ABI=x86_64 8 | -DANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 9 | -DCMAKE_ANDROID_NDK=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264 10 | -DCMAKE_TOOLCHAIN_FILE=C:\Users\kenne\AppData\Local\Android\Sdk\ndk\26.3.11579264\build\cmake\android.toolchain.cmake 11 | -DCMAKE_MAKE_PROGRAM=C:\Users\kenne\AppData\Local\Android\Sdk\cmake\3.22.1\bin\ninja.exe 12 | -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86_64 13 | -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86_64 14 | -DCMAKE_BUILD_TYPE=Debug 15 | -BD:\Programming\Flutter\Projects\flutter_extend\example\android\app\.cxx\Debug\6j5w435h\x86_64 16 | -GNinja 17 | -Wno-dev 18 | --no-warn-unused-cli 19 | Build command args: [] 20 | Version: 2 -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/prefab_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": false, 3 | "packages": [] 4 | } -------------------------------------------------------------------------------- /example/android/app/.cxx/Debug/6j5w435h/x86_64/symbol_folder_index.txt: -------------------------------------------------------------------------------- 1 | D:\Programming\Flutter\Projects\flutter_extend\example\build\app\intermediates\cxx\Debug\6j5w435h\obj\x86_64 -------------------------------------------------------------------------------- /example/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "com.android.application" 3 | id "kotlin-android" 4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. 5 | id "dev.flutter.flutter-gradle-plugin" 6 | } 7 | 8 | android { 9 | namespace = "com.example.example" 10 | compileSdk = flutter.compileSdkVersion 11 | ndkVersion = flutter.ndkVersion 12 | 13 | compileOptions { 14 | sourceCompatibility = JavaVersion.VERSION_1_8 15 | targetCompatibility = JavaVersion.VERSION_1_8 16 | } 17 | 18 | kotlinOptions { 19 | jvmTarget = JavaVersion.VERSION_1_8 20 | } 21 | 22 | defaultConfig { 23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 24 | applicationId = "com.example.example" 25 | // You can update the following values to match your application needs. 26 | // For more information, see: https://flutter.dev/to/review-gradle-config. 27 | minSdk = flutter.minSdkVersion 28 | targetSdk = flutter.targetSdkVersion 29 | versionCode = flutter.versionCode 30 | versionName = flutter.versionName 31 | } 32 | 33 | buildTypes { 34 | release { 35 | // TODO: Add your own signing config for the release build. 36 | // Signing with the debug keys for now, so `flutter run --release` works. 37 | signingConfig = signingConfigs.debug 38 | } 39 | } 40 | } 41 | 42 | flutter { 43 | source = "../.." 44 | } 45 | -------------------------------------------------------------------------------- /example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 15 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/src/main/kotlin/com/example/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() 6 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/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 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip 6 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | def flutterSdkPath = { 3 | def properties = new Properties() 4 | file("local.properties").withInputStream { properties.load(it) } 5 | def flutterSdkPath = properties.getProperty("flutter.sdk") 6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 7 | return flutterSdkPath 8 | }() 9 | 10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") 11 | 12 | repositories { 13 | google() 14 | mavenCentral() 15 | gradlePluginPortal() 16 | } 17 | } 18 | 19 | plugins { 20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0" 21 | id "com.android.application" version "8.1.0" apply false 22 | id "org.jetbrains.kotlin.android" version "1.8.22" apply false 23 | } 24 | 25 | include ":app" 26 | -------------------------------------------------------------------------------- /example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 12.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | 4 | @main 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 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /example/ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /example/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /example/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Example 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | example 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | CADisableMinimumFrameDurationOnPhone 45 | 46 | UIApplicationSupportsIndirectInputEvents 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /example/ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /example/lib/components/ball.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Ball extends StatelessWidget { 4 | final Color color; 5 | 6 | const Ball({super.key, required this.color}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | width: 100, 12 | height: 100, 13 | decoration: BoxDecoration(color: color, shape: BoxShape.circle), 14 | ); 15 | } 16 | } 17 | 18 | class Squicle extends StatelessWidget { 19 | final Color color; 20 | 21 | const Squicle({super.key, required this.color}); 22 | 23 | @override 24 | Widget build(BuildContext context) { 25 | return Container( 26 | width: 100, 27 | height: 100, 28 | decoration: BoxDecoration( 29 | color: color, 30 | shape: BoxShape.rectangle, 31 | borderRadius: BorderRadius.circular(24)), 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /example/lib/context_extensions_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_extend/flutter_extend.dart'; 3 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 4 | 5 | class ContextExtensionsExample extends StatelessWidget { 6 | const ContextExtensionsExample({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | body: Column( 12 | children: [ 13 | /// Add Style to Text 14 | Text("Get Text Style", style: context.theme.textTheme.titleLarge), 15 | 16 | /// Add Color to Container using Color Scheme 17 | Container( 18 | width: 100, 19 | height: 100, 20 | color: context.colorScheme.primary, 21 | ), 22 | 23 | /// Change color if is Dark Mode 24 | Container( 25 | width: 100, 26 | height: 100, 27 | color: context.isDarkMode ? Colors.grey : Colors.red, 28 | ), 29 | 30 | /// Get Current Screen Width 31 | Text("SCREEN WIDTH : ${context.screenWidth}"), 32 | 33 | /// Get Current Screen Height 34 | Text("SCREEN HEIGHT : ${context.screenHeight}"), 35 | ], 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:example/animation_extension_examples.dart'; 2 | import 'package:example/widget_extensions_example.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | void main() { 6 | runApp(const MyApp()); 7 | } 8 | 9 | class MyApp extends StatelessWidget { 10 | const MyApp({super.key}); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return MaterialApp( 15 | home: AnimationExtensionExamples(), 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /example/lib/widget_extensions_example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_extend/flutter_extend.dart'; 3 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 4 | 5 | class WidgetExtensionsExample extends StatelessWidget { 6 | const WidgetExtensionsExample({super.key}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | body: Column( 12 | children: [ 13 | /// Add Padding to text 14 | Text("Hello there my friend".removeAllWhiteSpaces()) 15 | .padding(padding: EdgeInsets.symmetric(horizontal: 32)), 16 | 17 | /// Generate Lorem Ipsum 18 | Text(''.generateLoremIpsum(wordCount: 30)), 19 | 20 | /// Generate Random UUID 21 | Text(''.generateUUID()), 22 | ], 23 | ), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /example/linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /example/linux/flutter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # This file controls Flutter-level build steps. It should not be edited. 2 | cmake_minimum_required(VERSION 3.10) 3 | 4 | set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") 5 | 6 | # Configuration provided via flutter tool. 7 | include(${EPHEMERAL_DIR}/generated_config.cmake) 8 | 9 | # TODO: Move the rest of this into files in ephemeral. See 10 | # https://github.com/flutter/flutter/issues/57146. 11 | 12 | # Serves the same purpose as list(TRANSFORM ... PREPEND ...), 13 | # which isn't available in 3.10. 14 | function(list_prepend LIST_NAME PREFIX) 15 | set(NEW_LIST "") 16 | foreach(element ${${LIST_NAME}}) 17 | list(APPEND NEW_LIST "${PREFIX}${element}") 18 | endforeach(element) 19 | set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) 20 | endfunction() 21 | 22 | # === Flutter Library === 23 | # System-level dependencies. 24 | find_package(PkgConfig REQUIRED) 25 | pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) 26 | pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) 27 | pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) 28 | 29 | set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") 30 | 31 | # Published to parent scope for install step. 32 | set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) 33 | set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) 34 | set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) 35 | set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) 36 | 37 | list(APPEND FLUTTER_LIBRARY_HEADERS 38 | "fl_basic_message_channel.h" 39 | "fl_binary_codec.h" 40 | "fl_binary_messenger.h" 41 | "fl_dart_project.h" 42 | "fl_engine.h" 43 | "fl_json_message_codec.h" 44 | "fl_json_method_codec.h" 45 | "fl_message_codec.h" 46 | "fl_method_call.h" 47 | "fl_method_channel.h" 48 | "fl_method_codec.h" 49 | "fl_method_response.h" 50 | "fl_plugin_registrar.h" 51 | "fl_plugin_registry.h" 52 | "fl_standard_message_codec.h" 53 | "fl_standard_method_codec.h" 54 | "fl_string_codec.h" 55 | "fl_value.h" 56 | "fl_view.h" 57 | "flutter_linux.h" 58 | ) 59 | list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") 60 | add_library(flutter INTERFACE) 61 | target_include_directories(flutter INTERFACE 62 | "${EPHEMERAL_DIR}" 63 | ) 64 | target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") 65 | target_link_libraries(flutter INTERFACE 66 | PkgConfig::GTK 67 | PkgConfig::GLIB 68 | PkgConfig::GIO 69 | ) 70 | add_dependencies(flutter flutter_assemble) 71 | 72 | # === Flutter tool backend === 73 | # _phony_ is a non-existent file to force this command to run every time, 74 | # since currently there's no way to get a full input/output list from the 75 | # flutter tool. 76 | add_custom_command( 77 | OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} 78 | ${CMAKE_CURRENT_BINARY_DIR}/_phony_ 79 | COMMAND ${CMAKE_COMMAND} -E env 80 | ${FLUTTER_TOOL_ENVIRONMENT} 81 | "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" 82 | ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} 83 | VERBATIM 84 | ) 85 | add_custom_target(flutter_assemble DEPENDS 86 | "${FLUTTER_LIBRARY}" 87 | ${FLUTTER_LIBRARY_HEADERS} 88 | ) 89 | -------------------------------------------------------------------------------- /example/linux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void fl_register_plugins(FlPluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /example/linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /example/linux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /example/linux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(runner LANGUAGES CXX) 3 | 4 | # Define the application target. To change its name, change BINARY_NAME in the 5 | # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer 6 | # work. 7 | # 8 | # Any new source files that you add to the application should be added here. 9 | add_executable(${BINARY_NAME} 10 | "main.cc" 11 | "my_application.cc" 12 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 13 | ) 14 | 15 | # Apply the standard set of build settings. This can be removed for applications 16 | # that need different build settings. 17 | apply_standard_settings(${BINARY_NAME}) 18 | 19 | # Add preprocessor definitions for the application ID. 20 | add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") 21 | 22 | # Add dependency libraries. Add any application-specific dependencies here. 23 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 24 | target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) 25 | 26 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 27 | -------------------------------------------------------------------------------- /example/linux/runner/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /example/linux/runner/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /example/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "ephemeral/Flutter-Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/macos/Flutter/GeneratedPluginRegistrant.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | import FlutterMacOS 6 | import Foundation 7 | 8 | 9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 | } 11 | -------------------------------------------------------------------------------- /example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | 10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { 11 | return true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "app_icon_16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "app_icon_32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "app_icon_32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "app_icon_64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "app_icon_128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "app_icon_256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "app_icon_256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "app_icon_512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "app_icon_512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "app_icon_1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2025 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /example/macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 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 | -------------------------------------------------------------------------------- /example/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility in the flutter_test package. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:example/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(const MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/web/favicon.png -------------------------------------------------------------------------------- /example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /example/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | example 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /example/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "short_name": "example", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /example/windows/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /example/windows/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void RegisterPlugins(flutter::PluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /example/windows/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /example/windows/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | project(runner LANGUAGES CXX) 3 | 4 | # Define the application target. To change its name, change BINARY_NAME in the 5 | # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer 6 | # work. 7 | # 8 | # Any new source files that you add to the application should be added here. 9 | add_executable(${BINARY_NAME} WIN32 10 | "flutter_window.cpp" 11 | "main.cpp" 12 | "utils.cpp" 13 | "win32_window.cpp" 14 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 15 | "Runner.rc" 16 | "runner.exe.manifest" 17 | ) 18 | 19 | # Apply the standard set of build settings. This can be removed for applications 20 | # that need different build settings. 21 | apply_standard_settings(${BINARY_NAME}) 22 | 23 | # Add preprocessor definitions for the build version. 24 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") 25 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") 26 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") 27 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") 28 | target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") 29 | 30 | # Disable Windows macros that collide with C++ standard library functions. 31 | target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") 32 | 33 | # Add dependency libraries and include directories. Add any application-specific 34 | # dependencies here. 35 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 36 | target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") 37 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 38 | 39 | # Run the Flutter tool portions of the build. This must not be removed. 40 | add_dependencies(${BINARY_NAME} flutter_assemble) 41 | -------------------------------------------------------------------------------- /example/windows/runner/flutter_window.cpp: -------------------------------------------------------------------------------- 1 | #include "flutter_window.h" 2 | 3 | #include 4 | 5 | #include "flutter/generated_plugin_registrant.h" 6 | 7 | FlutterWindow::FlutterWindow(const flutter::DartProject& project) 8 | : project_(project) {} 9 | 10 | FlutterWindow::~FlutterWindow() {} 11 | 12 | bool FlutterWindow::OnCreate() { 13 | if (!Win32Window::OnCreate()) { 14 | return false; 15 | } 16 | 17 | RECT frame = GetClientArea(); 18 | 19 | // The size here must match the window dimensions to avoid unnecessary surface 20 | // creation / destruction in the startup path. 21 | flutter_controller_ = std::make_unique( 22 | frame.right - frame.left, frame.bottom - frame.top, project_); 23 | // Ensure that basic setup of the controller was successful. 24 | if (!flutter_controller_->engine() || !flutter_controller_->view()) { 25 | return false; 26 | } 27 | RegisterPlugins(flutter_controller_->engine()); 28 | SetChildContent(flutter_controller_->view()->GetNativeWindow()); 29 | 30 | flutter_controller_->engine()->SetNextFrameCallback([&]() { 31 | this->Show(); 32 | }); 33 | 34 | // Flutter can complete the first frame before the "show window" callback is 35 | // registered. The following call ensures a frame is pending to ensure the 36 | // window is shown. It is a no-op if the first frame hasn't completed yet. 37 | flutter_controller_->ForceRedraw(); 38 | 39 | return true; 40 | } 41 | 42 | void FlutterWindow::OnDestroy() { 43 | if (flutter_controller_) { 44 | flutter_controller_ = nullptr; 45 | } 46 | 47 | Win32Window::OnDestroy(); 48 | } 49 | 50 | LRESULT 51 | FlutterWindow::MessageHandler(HWND hwnd, UINT const message, 52 | WPARAM const wparam, 53 | LPARAM const lparam) noexcept { 54 | // Give Flutter, including plugins, an opportunity to handle window messages. 55 | if (flutter_controller_) { 56 | std::optional result = 57 | flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, 58 | lparam); 59 | if (result) { 60 | return *result; 61 | } 62 | } 63 | 64 | switch (message) { 65 | case WM_FONTCHANGE: 66 | flutter_controller_->engine()->ReloadSystemFonts(); 67 | break; 68 | } 69 | 70 | return Win32Window::MessageHandler(hwnd, message, wparam, lparam); 71 | } 72 | -------------------------------------------------------------------------------- /example/windows/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_FLUTTER_WINDOW_H_ 2 | #define RUNNER_FLUTTER_WINDOW_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "win32_window.h" 10 | 11 | // A window that does nothing but host a Flutter view. 12 | class FlutterWindow : public Win32Window { 13 | public: 14 | // Creates a new FlutterWindow hosting a Flutter view running |project|. 15 | explicit FlutterWindow(const flutter::DartProject& project); 16 | virtual ~FlutterWindow(); 17 | 18 | protected: 19 | // Win32Window: 20 | bool OnCreate() override; 21 | void OnDestroy() override; 22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, 23 | LPARAM const lparam) noexcept override; 24 | 25 | private: 26 | // The project to run. 27 | flutter::DartProject project_; 28 | 29 | // The Flutter instance hosted by this window. 30 | std::unique_ptr flutter_controller_; 31 | }; 32 | 33 | #endif // RUNNER_FLUTTER_WINDOW_H_ 34 | -------------------------------------------------------------------------------- /example/windows/runner/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "flutter_window.h" 6 | #include "utils.h" 7 | 8 | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, 9 | _In_ wchar_t *command_line, _In_ int show_command) { 10 | // Attach to console when present (e.g., 'flutter run') or create a 11 | // new console when running with a debugger. 12 | if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { 13 | CreateAndAttachConsole(); 14 | } 15 | 16 | // Initialize COM, so that it is available for use in the library and/or 17 | // plugins. 18 | ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); 19 | 20 | flutter::DartProject project(L"data"); 21 | 22 | std::vector command_line_arguments = 23 | GetCommandLineArguments(); 24 | 25 | project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); 26 | 27 | FlutterWindow window(project); 28 | Win32Window::Point origin(10, 10); 29 | Win32Window::Size size(1280, 720); 30 | if (!window.Create(L"example", origin, size)) { 31 | return EXIT_FAILURE; 32 | } 33 | window.SetQuitOnClose(true); 34 | 35 | ::MSG msg; 36 | while (::GetMessage(&msg, nullptr, 0, 0)) { 37 | ::TranslateMessage(&msg); 38 | ::DispatchMessage(&msg); 39 | } 40 | 41 | ::CoUninitialize(); 42 | return EXIT_SUCCESS; 43 | } 44 | -------------------------------------------------------------------------------- /example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KenStarry/flutter_extend/04e25b4d990f85b30d0345a11658b129d7c96d6c/example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /example/windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /example/windows/runner/utils.cpp: -------------------------------------------------------------------------------- 1 | #include "utils.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | 10 | void CreateAndAttachConsole() { 11 | if (::AllocConsole()) { 12 | FILE *unused; 13 | if (freopen_s(&unused, "CONOUT$", "w", stdout)) { 14 | _dup2(_fileno(stdout), 1); 15 | } 16 | if (freopen_s(&unused, "CONOUT$", "w", stderr)) { 17 | _dup2(_fileno(stdout), 2); 18 | } 19 | std::ios::sync_with_stdio(); 20 | FlutterDesktopResyncOutputStreams(); 21 | } 22 | } 23 | 24 | std::vector GetCommandLineArguments() { 25 | // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. 26 | int argc; 27 | wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); 28 | if (argv == nullptr) { 29 | return std::vector(); 30 | } 31 | 32 | std::vector command_line_arguments; 33 | 34 | // Skip the first argument as it's the binary name. 35 | for (int i = 1; i < argc; i++) { 36 | command_line_arguments.push_back(Utf8FromUtf16(argv[i])); 37 | } 38 | 39 | ::LocalFree(argv); 40 | 41 | return command_line_arguments; 42 | } 43 | 44 | std::string Utf8FromUtf16(const wchar_t* utf16_string) { 45 | if (utf16_string == nullptr) { 46 | return std::string(); 47 | } 48 | unsigned int target_length = ::WideCharToMultiByte( 49 | CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, 50 | -1, nullptr, 0, nullptr, nullptr) 51 | -1; // remove the trailing null character 52 | int input_length = (int)wcslen(utf16_string); 53 | std::string utf8_string; 54 | if (target_length == 0 || target_length > utf8_string.max_size()) { 55 | return utf8_string; 56 | } 57 | utf8_string.resize(target_length); 58 | int converted_length = ::WideCharToMultiByte( 59 | CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, 60 | input_length, utf8_string.data(), target_length, nullptr, nullptr); 61 | if (converted_length == 0) { 62 | return std::string(); 63 | } 64 | return utf8_string; 65 | } 66 | -------------------------------------------------------------------------------- /example/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /lib/animations/animation_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension AnimationExtensions on Widget { 4 | /// Pulse Simple Effect Animation 5 | Widget pulseSimple( 6 | {int delay = 0, 7 | int duration = 500, 8 | double scaleFactor = 1.2, 9 | bool repeat = true, 10 | bool reverse = true, 11 | bool autoPlay = true, 12 | void Function(AnimationController)? onInit}) => 13 | animate( 14 | delay: delay.milliSeconds, 15 | autoPlay: autoPlay, 16 | onInit: onInit, 17 | onPlay: (controller) { 18 | if (repeat) { 19 | controller.repeat(reverse: reverse); 20 | } 21 | }) 22 | .scaleXY( 23 | begin: 1.0, 24 | end: scaleFactor, 25 | duration: duration.milliSeconds, 26 | curve: Curves.easeInOut); 27 | 28 | /// Bounce Effect Animation 29 | Widget pulseAlt( 30 | {int delay = 0, 31 | int duration = 500, 32 | bool repeat = true, 33 | void Function(AnimationController)? onInit}) => 34 | animate( 35 | delay: delay.milliSeconds, 36 | autoPlay: true, 37 | onInit: onInit, 38 | onPlay: (controller) { 39 | if (repeat) { 40 | controller.repeat(reverse: true); 41 | } 42 | }) 43 | .scaleXY(begin: 0.8, end: 1.1, duration: duration.milliSeconds) 44 | .then() 45 | .scaleXY( 46 | begin: 1.1, end: 1.0, duration: (duration ~/ 2).milliSeconds); 47 | } 48 | -------------------------------------------------------------------------------- /lib/animations/list_animation_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ListAnimationExtensions on Widget { 4 | /// 5 | } 6 | -------------------------------------------------------------------------------- /lib/animations/shake_animation_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ShakeAnimationExtensions on Widget { 4 | /// Shake Animation 5 | Widget shake( 6 | {int delay = 0, 7 | double begin = 0, 8 | int duration = 500, 9 | bool repeat = false, 10 | bool reverse = false, 11 | bool autoPlay = true, 12 | Curve? curve, 13 | void Function(AnimationController)? onInit}) => 14 | animate( 15 | delay: delay.milliSeconds, 16 | autoPlay: autoPlay, 17 | onInit: onInit, 18 | onPlay: (controller) { 19 | if (repeat) { 20 | controller.repeat(reverse: reverse); 21 | } 22 | }).shake(duration: duration.milliSeconds, hz: 5); 23 | } 24 | -------------------------------------------------------------------------------- /lib/colors/global_color_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension GlobalColorExtensions on Color { 4 | /// Compute the Luminance of a Color to determine if it's dark or light 5 | /// ** This is computationally expensive to calculate **. 6 | double get luminance => computeLuminance(); 7 | 8 | /// Check if the Color is a Dark Color 9 | bool get isDark => luminance < 0.5; 10 | 11 | /// Check if the Color is a Light Color 12 | bool get isLight => luminance >= 0.5; 13 | 14 | /// Lighten Color by percent (100 -> white) 15 | Color getLighterShade(double factor) { 16 | assert(factor >= 0 && factor <= 1, 'Factor must be between 0 and 1'); 17 | 18 | // Extract the red, green, and blue components of the color 19 | int red = (r * 255).toInt(); 20 | int green = (g * 255).toInt(); 21 | int blue = (b * 255).toInt(); 22 | 23 | // Calculate the new lighter color components 24 | int newRed = red + ((255 - red) * factor).round(); 25 | int newGreen = green + ((255 - green) * factor).round(); 26 | int newBlue = blue + ((255 - blue) * factor).round(); 27 | 28 | // Ensure the values are within the valid range (0-255) 29 | newRed = newRed.clamp(0, 255); 30 | newGreen = newGreen.clamp(0, 255); 31 | newBlue = newBlue.clamp(0, 255); 32 | 33 | // Return the new lighter color 34 | return Color.fromARGB((a * 255).toInt(), newRed, newGreen, newBlue); 35 | } 36 | 37 | /// Color to Hex 38 | String toHex({bool hashSign = true, bool withAlpha = false}) { 39 | final alpha = (a * 255).toInt().toRadixString(16).padLeft(2, '0'); 40 | final red = (r * 255).toInt().toRadixString(16).padLeft(2, '0'); 41 | final green = (g * 255).toInt().toRadixString(16).padLeft(2, '0'); 42 | final blue = (b * 255).toInt().toRadixString(16).padLeft(2, '0'); 43 | 44 | return '${hashSign ? '#' : ''}' 45 | '${withAlpha ? alpha : ''}' 46 | '$red$green$blue' 47 | .toUpperCase(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /lib/context/context_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ContextExtensions on BuildContext { 4 | /// Hide Keyboard 5 | void hideKeyboard() => FocusScope.of(this).unfocus(); 6 | 7 | /// Perform Safe SetState operations by Checking whether the widget is disposed 8 | void safeSetState(VoidCallback callback) { 9 | if (mounted) { 10 | callback(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/context/media_query_context_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension MediaQueryContextExtensions on BuildContext { 4 | /// Get Screen Size 5 | Size get screenSize => MediaQuery.sizeOf(this); 6 | 7 | /// Get Screen Width 8 | double get screenWidth => MediaQuery.sizeOf(this).width; 9 | 10 | /// Get Screen Height 11 | double get screenHeight => MediaQuery.sizeOf(this).height; 12 | 13 | /// Get Safe Padding from Media Query 14 | EdgeInsets get safePadding => MediaQuery.of(this).padding; 15 | 16 | /// Get Screen Orientation 17 | Orientation get orientation => MediaQuery.of(this).orientation; 18 | 19 | /// Check Platform Brightness 20 | Brightness get brightness => MediaQuery.of(this).platformBrightness; 21 | 22 | /// Check Dark Mode 23 | bool get isDarkMode => 24 | MediaQuery.of(this).platformBrightness == Brightness.dark; 25 | 26 | /// Check Whether keyboard is visible on screen 27 | bool get isKeyboardVisible => MediaQuery.of(this).viewInsets.bottom > 0; 28 | 29 | /// Detect Whether the device is in Landscape mode 30 | bool get isLandscape => 31 | MediaQuery.of(this).orientation == Orientation.landscape; 32 | 33 | /// Detect Whether the device is in Portrait mode 34 | bool get isPortrait => 35 | MediaQuery.of(this).orientation == Orientation.portrait; 36 | } 37 | -------------------------------------------------------------------------------- /lib/context/navigator_context_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension NavigatorContextExtensions on BuildContext { 4 | /// Simplified Navigation to a new Screen 5 | void navigateTo(Widget page) { 6 | Navigator.push(this, MaterialPageRoute(builder: (context) => page)); 7 | } 8 | 9 | /// Simplified Pop Screen 10 | void popScreen() => Navigator.pop(this); 11 | } 12 | -------------------------------------------------------------------------------- /lib/context/platform_context_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension PlatformContextExtensions on BuildContext { 4 | bool get isIOS => Platform.isIOS; 5 | 6 | bool get isAndroid => Platform.isAndroid; 7 | 8 | bool get isWindows => Platform.isWindows; 9 | 10 | bool get isMacOS => Platform.isMacOS; 11 | 12 | bool get isLinux => Platform.isLinux; 13 | 14 | bool get isFuchsia => Platform.isFuchsia; 15 | } 16 | -------------------------------------------------------------------------------- /lib/context/theme_context_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ThemeContextExtensions on BuildContext { 4 | /// Get Theme Data 5 | ThemeData get theme => Theme.of(this); 6 | 7 | /// Get Text Theme 8 | TextTheme get textTheme => Theme.of(this).textTheme; 9 | 10 | /// Get Color Scheme 11 | ColorScheme get colorScheme => Theme.of(this).colorScheme; 12 | 13 | /// Get Icon Theme Data 14 | IconThemeData get iconTheme => Theme.of(this).iconTheme; 15 | } 16 | -------------------------------------------------------------------------------- /lib/date_time/date_time_comparison_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension DateTimeComparisonExtensions on DateTime { 4 | /// Checks if the current DateTime provided is Today 5 | /// ```dart 6 | /// print("Is Today? ${DateTime(2024, 1, 1).isToday}"); // false 7 | /// ``` 8 | bool isToday() { 9 | final DateTime now = DateTime.now(); 10 | final DateTime date = DateTime(year, month, day); 11 | 12 | return now.difference(date).inDays == 0; 13 | } 14 | 15 | /// Check if Date is Yesterday 16 | bool isYesterday() { 17 | final DateTime now = DateTime.now(); 18 | final DateTime date = DateTime(year, month, day); 19 | 20 | return now.difference(date).inDays == 1; 21 | } 22 | 23 | /// Check if Date is Tomorrow 24 | bool isTomorrow() { 25 | final DateTime now = DateTime.now(); 26 | final DateTime date = DateTime(year, month, day); 27 | 28 | return now.difference(date).inDays == -1; 29 | } 30 | 31 | /// Checks if given DateTime is in the past from current DateTime 32 | bool isPast() => isBefore(DateTime.now()); 33 | 34 | /// Checks if given DateTime is in the future from current DateTime 35 | bool isFuture() => isAfter(DateTime.now()); 36 | } 37 | -------------------------------------------------------------------------------- /lib/date_time/date_time_formatting_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension DateTimeFormattingExtensions on DateTime { 4 | /// Get Time Ago 5 | String timeAgo() { 6 | final Duration diff = DateTime.now().difference(this); 7 | 8 | if (diff.inDays > 365) { 9 | return '${(diff.inDays / 365).floor()} years ago'; 10 | } else if (diff.inDays > 30) { 11 | return '${(diff.inDays / 30).floor()} months ago'; 12 | } else if (diff.inDays > 7) { 13 | return '${(diff.inDays / 7).floor()} weeks ago'; 14 | } else if (diff.inDays > 0) { 15 | return '${diff.inDays} days ago'; 16 | } else if (diff.inHours > 0) { 17 | return '${diff.inHours} hours ago'; 18 | } else if (diff.inMinutes > 0) { 19 | return '${diff.inMinutes} minutes ago'; 20 | } else { 21 | return 'Just now'; 22 | } 23 | } 24 | 25 | /// Get Time Until 26 | String timeUntil() { 27 | final Duration diff = difference(DateTime.now()); 28 | 29 | if (diff.inDays > 365) { 30 | return 'in ${(diff.inDays / 365).floor()} years'; 31 | } else if (diff.inDays > 30) { 32 | return 'in ${(diff.inDays / 30).floor()} months'; 33 | } else if (diff.inDays > 7) { 34 | return 'in ${(diff.inDays / 7).floor()} weeks'; 35 | } else if (diff.inDays > 0) { 36 | return 'in ${diff.inDays} days'; 37 | } else if (diff.inHours > 0) { 38 | return 'in ${diff.inHours} hours'; 39 | } else if (diff.inMinutes > 0) { 40 | return 'in ${diff.inMinutes} minutes'; 41 | } else { 42 | return 'Just now'; 43 | } 44 | } 45 | 46 | /// Gets the given DateTime's Month Name eg. January, February, March etc... 47 | String monthName() => DateFormat.MMMM().format(this); 48 | 49 | /// Gets the shortened of the given DateTime's Month Name eg. Jan, feb, Mar, etc... 50 | String monthNameShort() => DateFormat.MMM().format(this); 51 | 52 | /// Gets the given DateTime's Day Name eg. Monday, Tuesday, Wednesday etc... 53 | String dayName() => DateFormat.EEEE().format(this); 54 | 55 | /// Gets the shortened of the given DateTime's Day Name eg. Mon, Tue, Wed etc... 56 | String dayNameShort() => DateFormat.E().format(this); 57 | 58 | /// Gets the Slashed Date Format of the given DateTime eg. 31/12/2025 59 | String slashedDate() => DateFormat('dd/MM/yyyy').format(this); 60 | 61 | /// Get Week Number of the Given Date 62 | int weekNumber() { 63 | final firstDayOfYear = DateTime(year, 1, 1); 64 | final daysSinceFirstDay = difference(firstDayOfYear).inDays; 65 | 66 | return ((daysSinceFirstDay + firstDayOfYear.weekday - 1) / 7).ceil(); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /lib/date_time/date_time_manipulation_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension DateTimeManipulationExtensions on DateTime { 4 | /// Add Number of Days to the DateTime 5 | DateTime addDays(int days) => add(Duration(days: days)); 6 | 7 | /// Subtract Number of Days from the DateTime 8 | DateTime subtractDays(int days) => subtract(Duration(days: days)); 9 | 10 | /// Add Number of Months to the DateTime 11 | DateTime addMonths(int months) => DateTime(year, month + months, day, hour, 12 | minute, second, millisecond, microsecond); 13 | 14 | /// Subtract Number of Months from the DateTime 15 | DateTime subtractMonths(int months) => DateTime(year, month - months, day, 16 | hour, minute, second, millisecond, microsecond); 17 | 18 | /// Add Number of Years to the DateTime 19 | DateTime addYears(int years) => DateTime( 20 | year + years, month, day, hour, minute, second, millisecond, microsecond); 21 | 22 | /// Subtract Number of Years from the DateTime 23 | DateTime subtractYears(int years) => DateTime( 24 | year - years, month, day, hour, minute, second, millisecond, microsecond); 25 | 26 | /// Adds Business Days to the current DateTime Object 27 | DateTime addBusinessDays(int days) { 28 | var result = this; 29 | 30 | while (days > 0) { 31 | result = result.add(Duration(days: 1)); 32 | if (result.weekday != DateTime.saturday && 33 | result.weekday != DateTime.sunday) { 34 | days--; 35 | } 36 | } 37 | 38 | return result; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/enum/currency_direction.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | enum CurrencyDirection { left, right } 4 | -------------------------------------------------------------------------------- /lib/enum/emoji.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | class Emoji { 4 | final String emoji; 5 | final EmojiCategory emojiCategory; 6 | 7 | const Emoji._(this.emoji, this.emojiCategory); 8 | 9 | /// Happy Emojis 10 | static const Emoji grin = Emoji._('😄', EmojiCategory.happy); 11 | static const Emoji laugh = Emoji._('😂', EmojiCategory.happy); 12 | static const Emoji laughRolling = Emoji._('🤣', EmojiCategory.happy); 13 | static const Emoji smile = Emoji._('😁', EmojiCategory.happy); 14 | static const Emoji happyEyes = Emoji._('🥹', EmojiCategory.happy); 15 | 16 | @override 17 | String toString() => emoji; 18 | } 19 | -------------------------------------------------------------------------------- /lib/enum/emoji_category.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | enum EmojiCategory { happy, sad, love, angry, food, drink, animal, random } 4 | 5 | extension EmojiCategoryExtension on EmojiCategory { 6 | /// Happy Emojis 7 | Emoji get grin => Emoji.grin; 8 | 9 | Emoji get laugh => Emoji.laugh; 10 | 11 | Emoji get laughRolling => Emoji.laughRolling; 12 | 13 | Emoji get smile => Emoji.smile; 14 | 15 | Emoji get happyEyes => Emoji.happyEyes; 16 | } 17 | -------------------------------------------------------------------------------- /lib/files/file_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension FileExtensions on File { 4 | /// Get File Size in KB, MB or GB 5 | String fileFormattedSize({bool fullySizedName = false}) { 6 | int bytes = lengthSync(); 7 | 8 | if (bytes < 1024) return "$bytes ${fullySizedName ? 'Bytes' : 'B'}"; 9 | 10 | if (bytes < 1024 * 1024) { 11 | return "${(bytes / 1024).toStringAsFixed(2)} ${fullySizedName ? 'Kilobytes' : 'KB'}"; 12 | } 13 | 14 | if (bytes < 1024 * 1024 * 1024) { 15 | return "${(bytes / (1024 * 1024)).toStringAsFixed(2)} ${fullySizedName ? 'Megabytes' : 'MB'}"; 16 | } 17 | 18 | return "${(bytes / (1024 * 1024 * 1024)).toStringAsFixed(2)} ${fullySizedName ? 'Gigabytes' : 'GB'}"; 19 | } 20 | 21 | /// Get File Path 22 | String filePath() => path; 23 | 24 | /// Get File Extension 25 | String fileExtension() => uri.pathSegments.last.split('.').last; 26 | 27 | /// Get file name without extension 28 | String fileNameWithoutExtension() => uri.pathSegments.last.split('.').first; 29 | 30 | /// Convert to Base64 String 31 | String fileToBase64String() => base64Encode(readAsBytesSync()); 32 | 33 | /// Check if file is an image 34 | bool isImage() { 35 | final ext = path.split('.').last.toLowerCase(); 36 | 37 | return ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].contains(ext); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/flutter_extend.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:convert'; 3 | import 'dart:io'; 4 | import 'dart:math'; 5 | import 'package:flutter/gestures.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:flutter/services.dart'; 8 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 9 | import 'package:intl/intl.dart'; 10 | import 'package:flutter_animate/flutter_animate.dart'; 11 | 12 | /// Enums 13 | part 'enum/emoji.dart'; 14 | part 'enum/emoji_category.dart'; 15 | part 'enum/currency_direction.dart'; 16 | 17 | /// Animation Extensions 18 | part 'animations/animation_extensions.dart'; 19 | part 'animations/fade_in_animation_extensions.dart'; 20 | part 'animations/shake_animation_extensions.dart'; 21 | part 'animations/list_animation_extensions.dart'; 22 | 23 | /// File Extensions 24 | part 'files/file_extensions.dart'; 25 | 26 | /// Number Extensions 27 | part 'number/number_duration_extensions.dart'; 28 | part 'number/number_currency_extensions.dart'; 29 | 30 | /// DateTime Extensions 31 | part 'date_time/date_time_manipulation_extensions.dart'; 32 | part 'date_time/date_time_formatting_extensions.dart'; 33 | part 'date_time/date_time_comparison_extensions.dart'; 34 | 35 | /// Image Extensions 36 | // part 'images/image_extensions.dart'; 37 | 38 | /// List Extensions 39 | part 'lists/list_extensions.dart'; 40 | 41 | /// Future Extensions 42 | part 'futures/string_future_extensions.dart'; 43 | part 'futures/future_extensions.dart'; 44 | part 'futures/future_iterable_extensions.dart'; 45 | 46 | /// Generator Extensions 47 | part 'generators/string_generator_extensions.dart'; 48 | part 'generators/widget_generator_extensions.dart'; 49 | 50 | /// String Extensions 51 | part 'string/global_string_extensions.dart'; 52 | part 'string/string_formatter_extensions.dart'; 53 | part 'string/string_transformer_extensions.dart'; 54 | part 'string/validation_string_extensions.dart'; 55 | 56 | /// Color Extensions 57 | part 'colors/global_color_extensions.dart'; 58 | 59 | /// Widget Extensions 60 | part 'widgets/widget_extensions.dart'; 61 | 62 | part 'widgets/scaffold_extensions.dart'; 63 | 64 | part 'widgets/text_extensions.dart'; 65 | 66 | /// Context Extensions 67 | part 'context/context_extensions.dart'; 68 | part 'context/theme_context_extensions.dart'; 69 | part 'context/media_query_context_extensions.dart'; 70 | part 'context/navigator_context_extensions.dart'; 71 | part 'context/platform_context_extensions.dart'; 72 | 73 | /// currency Extensions 74 | part 'string/currency_extensions.dart'; 75 | -------------------------------------------------------------------------------- /lib/futures/future_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension FutureExtensions on Future { 4 | /// Wrap a Future in a Completer 5 | Completer wrapInCompleter() { 6 | final completer = Completer(); 7 | 8 | then(completer.complete).catchError(completer.completeError); 9 | return completer; 10 | } 11 | 12 | /// Check if Future is Complete 13 | bool isComplete() => wrapInCompleter().isCompleted; 14 | 15 | /// Retry a Future - Retry Futures such as network calls etc. 16 | Future retry(int retries, {Duration delay = Duration.zero}) async { 17 | for (int attempt = 0; attempt < retries; attempt++) { 18 | try { 19 | return await this; 20 | } catch (error) { 21 | if (attempt == retries - 1) rethrow; 22 | if (delay != Duration.zero) await Future.delayed(delay); 23 | } 24 | } 25 | throw Exception('Failed after $retries retries'); 26 | } 27 | 28 | /// Future Timeout - Stop waiting for this future after a timeout is complete 29 | Future timeoutWithFallback(Duration timeout, T fallbackValue) => 30 | this.timeout(timeout, onTimeout: () => fallbackValue); 31 | 32 | /// Run with a delay - Run Future after a delay 33 | Future runAfterDelay(Duration delay) async { 34 | await Future.delayed(delay); 35 | return await this; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lib/futures/future_iterable_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension FutureIterableExtensions on Iterable> { 4 | /// Run multiple Futures with a limit 5 | Future> runWithLimit(int limit) async { 6 | final results = []; 7 | final pool = >[]; 8 | 9 | for (var future in this) { 10 | if (pool.length >= limit) { 11 | results.add(await Future.any(pool)); 12 | pool.removeWhere((f) => f.isComplete()); 13 | } 14 | 15 | pool.add(future); 16 | } 17 | 18 | results.addAll(await Future.wait(pool)); 19 | return results; 20 | } 21 | 22 | /// Run multiple futures with a limit (Order Preserved) 23 | Future> runWithLimitOrdered(int limit) async { 24 | final results = List.filled(length, null); 25 | final futures = toList(); 26 | final active = >[]; 27 | 28 | for (int i = 0; i < futures.length; i++) { 29 | final future = futures[i].then((value) { 30 | results[i] = value; 31 | }); 32 | 33 | active.add(future); 34 | 35 | if (active.length >= limit) { 36 | await Future.any(active); 37 | active.removeWhere((f) => f.isComplete()); 38 | } 39 | } 40 | 41 | await Future.wait(active); 42 | return results.cast(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/futures/string_future_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension StringFutureExtensions on String { 4 | /// Copy to Clipboard - Await this to copy selected Text to Clipboard 5 | Future copyToClipboard() async => 6 | await Clipboard.setData(ClipboardData(text: this)); 7 | } 8 | -------------------------------------------------------------------------------- /lib/generators/string_generator_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension StringGeneratorExtensions on String { 4 | /// Lorem Generator - Generate Lorem Ipsum Text 5 | String generateLoremIpsum({int wordCount = 30}) { 6 | const loremWords = [ 7 | 'Lorem', 8 | 'ipsum', 9 | 'dolor', 10 | 'sit', 11 | 'amet', 12 | 'consectetur', 13 | 'adipiscing', 14 | 'elit', 15 | 'sed', 16 | 'do', 17 | 'eiusmod', 18 | 'tempor', 19 | 'incididunt', 20 | 'ut', 21 | 'labore', 22 | 'et', 23 | 'dolore', 24 | 'magna', 25 | 'aliqua', 26 | 'Ut', 27 | 'enim', 28 | 'ad', 29 | 'minim', 30 | 'veniam', 31 | 'quis', 32 | 'nostrud', 33 | 'exercitation', 34 | 'ullamco', 35 | 'laboris', 36 | 'nisi', 37 | 'ut', 38 | 'aliquip', 39 | 'ex', 40 | 'ea', 41 | 'commodo', 42 | 'consequat', 43 | 'Duis', 44 | 'aute', 45 | 'irure', 46 | 'dolor', 47 | 'in', 48 | 'reprehenderit', 49 | 'in', 50 | 'voluptate', 51 | 'velit', 52 | 'esse', 53 | 'cillum', 54 | 'dolore', 55 | 'eu', 56 | 'fugiat', 57 | 'nulla', 58 | 'pariatur', 59 | 'Excepteur', 60 | 'sint', 61 | 'occaecat', 62 | 'cupidatat', 63 | 'non', 64 | 'proident', 65 | 'sunt', 66 | 'in', 67 | 'culpa', 68 | 'qui', 69 | 'officia', 70 | 'deserunt', 71 | 'mollit', 72 | 'anim', 73 | 'id', 74 | 'est', 75 | 'laborum' 76 | ]; 77 | 78 | return List.generate( 79 | wordCount, (index) => loremWords[index % loremWords.length]).join(' '); 80 | } 81 | 82 | /// Random String generator 83 | String generateRandomString(int length, 84 | {bool includeNumbers = false, bool includeSpecial = false}) { 85 | const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 86 | const numbers = '0123456789'; 87 | const special = '!@#\$%^&*()_+-=[]{}|;:\'",.<>?/`~'; 88 | 89 | String chars = letters; 90 | 91 | if (includeNumbers) chars += numbers; 92 | if (includeSpecial) chars += special; 93 | 94 | final rand = Random(); 95 | return List.generate(length, (index) => chars[rand.nextInt(chars.length)]) 96 | .join(''); 97 | } 98 | 99 | /// UUID Generator - Generates a random UUID (Universally Unique Identifier) 100 | String generateUUID({int length = 32}) { 101 | final random = Random(); 102 | 103 | final uuid = List.generate(length, (index) { 104 | final char = random.nextInt(16).toRadixString(16); 105 | 106 | return [8, 12, 16, 20].contains(index) ? '-$char' : char; 107 | }).join(); 108 | 109 | return uuid; 110 | } 111 | 112 | /// Read From Clipboard - Read Contents from Clipboard 113 | Future generateClipboardContents({String? textIfNull}) async { 114 | final data = await Clipboard.getData('text/plain'); 115 | return data?.text ?? textIfNull; 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /lib/generators/widget_generator_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension WidgetGeneratorExtensions on BuildContext {} 4 | -------------------------------------------------------------------------------- /lib/lists/list_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ListExtensions on List { 4 | /// Gets the First Element of a list or null if the list is empty 5 | T? firstOrNull() => isNotEmpty ? first : null; 6 | 7 | /// Gets the Last Element of a list or null if the list is empty 8 | T? lastOrNull() => isNotEmpty ? last : null; 9 | 10 | /// Sort a List - Doesn't return the sorted list 11 | void sortBy(Comparable Function(T) selector, {bool ascending = true}) { 12 | sort((a, b) { 13 | final keyA = selector(a); 14 | final keyB = selector(b); 15 | 16 | final comparison = keyA.compareTo(keyB); 17 | return ascending ? comparison : -comparison; 18 | }); 19 | } 20 | 21 | /// Sort and Return the Sorted List 22 | List sortByAndReturnSorted(Comparable Function(T) selector, 23 | {bool ascending = true}) { 24 | final sortedList = List.from(this); 25 | 26 | sortedList.sort((a, b) { 27 | final keyA = selector(a); 28 | final keyB = selector(b); 29 | 30 | final comparison = keyA.compareTo(keyB); 31 | return ascending ? comparison : -comparison; 32 | }); 33 | 34 | return sortedList; 35 | } 36 | 37 | /// Shuffle Copy - Returns a shuffled copy of the original list 38 | List shuffled() { 39 | final copy = [...this]; 40 | final random = Random(); 41 | 42 | for (var i = copy.length - 1; i > 0; i--) { 43 | final j = random.nextInt(i + 1); 44 | final temp = copy[i]; 45 | copy[i] = copy[j]; 46 | copy[j] = temp; 47 | } 48 | 49 | return copy; 50 | } 51 | 52 | /// Splits The List into chunks of different sizes 53 | List> chunked(int chunkSize) { 54 | if (chunkSize <= 0) { 55 | throw ArgumentError("Chunk Size must be greater than 0"); 56 | } 57 | 58 | return [ 59 | for (var i = 0; i < length; i += chunkSize) 60 | sublist(i, (i + chunkSize).clamp(0, length)) 61 | ]; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /lib/number/number_currency_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension NumberCurrencyExtensions on num { 4 | /// Converts the Number to a Given currency 5 | String toCurrency( 6 | {int decimalPlaces = 2, 7 | String? currencySymbol = 'KES', 8 | CurrencyDirection currencyDirection = CurrencyDirection.left, 9 | String thousandsSeparator = ',', 10 | String decimalSeparator = '.'}) { 11 | String formattedNumber = toStringAsFixed(decimalPlaces); 12 | 13 | List parts = formattedNumber.split('.'); 14 | String wholeNumber = parts[0]; 15 | 16 | wholeNumber = wholeNumber.replaceAllMapped( 17 | RegExp(r'\B(?=(\d{3})+(?!\d))'), (match) => thousandsSeparator); 18 | 19 | String result = wholeNumber; 20 | 21 | if (decimalPlaces > 0) { 22 | result = '$result$decimalSeparator${parts[1]}'; 23 | } 24 | 25 | return currencyDirection == CurrencyDirection.left 26 | ? '${currencySymbol == null ? '' : '$currencySymbol '}$result' 27 | : '$result${currencySymbol == null ? '' : ' $currencySymbol'}'; 28 | } 29 | 30 | /// Abbreviates the Given Number to a format eg 1.1B, 2.0K etc 31 | String toAbbreviated({ 32 | int decimalCount = 1, 33 | bool isLowercase = false, 34 | String? currencySymbol, 35 | CurrencyDirection currencyDirection = CurrencyDirection.left, 36 | }) { 37 | final Map> suffixes = { 38 | 1e9: ['B', 'b'], 39 | 1e6: ['M', 'm'], 40 | 1e3: ['K', 'k'] 41 | }; 42 | // Store the absolute value to ensure correct abbreviation logic for negative numbers. 43 | var value = this; 44 | for (final entry in suffixes.entries) { 45 | // Convert to positive for comparison, but keep the original number's sign. 46 | if (this < 0) value = -this; 47 | if (value >= entry.key) { 48 | final formattedValue = (this / entry.key).toStringAsFixed(decimalCount); 49 | final suffix = isLowercase ? entry.value[1] : entry.value[0]; 50 | final symbol = currencySymbol != null ? '$currencySymbol ' : ''; 51 | 52 | return currencyDirection == CurrencyDirection.left 53 | ? '$symbol$formattedValue$suffix'.trim() 54 | : '$formattedValue$suffix ${currencySymbol ?? ''}'.trim(); 55 | } 56 | } 57 | 58 | return toString(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /lib/number/number_duration_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension NumberDurationExtensions on int { 4 | /// Days 5 | Duration get days => Duration(days: this); 6 | 7 | /// Hours 8 | Duration get hours => Duration(hours: this); 9 | 10 | /// Minutes 11 | Duration get minutes => Duration(minutes: this); 12 | 13 | /// Seconds 14 | Duration get seconds => Duration(seconds: this); 15 | 16 | /// Milliseconds 17 | Duration get milliSeconds => Duration(milliseconds: this); 18 | 19 | /// Microseconds 20 | Duration get microSeconds => Duration(microseconds: this); 21 | } 22 | -------------------------------------------------------------------------------- /lib/string/currency_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension CurrencyExtensions on String { 4 | String get thousandNumberFormat { 5 | String amountString = "0"; 6 | 7 | if (isEmpty) { 8 | amountString = "0"; 9 | } else { 10 | amountString = this; 11 | } 12 | amountString = amountString.cleanNumbers; 13 | double? amount = double.tryParse(amountString); 14 | 15 | amount ??= 0; 16 | 17 | var formatter = NumberFormat("#,##0.##########"); 18 | String convertedAmount = formatter.format(amount); 19 | 20 | return convertedAmount; 21 | } 22 | 23 | String get cleanNumbers { 24 | return replaceAll(",", ""); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/string/global_string_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension GlobalStringExtensions on String { 4 | /// Mask part of the String with character while keeping the first and last visible Count characters 5 | String mask({int visibleCount = 2, String maskCharacter = '*'}) { 6 | if (length <= visibleCount * 2) return this; 7 | 8 | return substring(0, visibleCount) + 9 | maskCharacter * (length - visibleCount * 2) + 10 | substring(length - visibleCount); 11 | } 12 | 13 | /// Reverse a String 14 | String reverse() => split('').reversed.join(''); 15 | 16 | /// Last N Characters 17 | String getLastNCharacters(int n) => 18 | length >= n ? substring(length - n) : this; 19 | 20 | /// Truncate Name 21 | String truncateName() { 22 | final wordArray = split(' '); 23 | 24 | return wordArray.length > 1 25 | ? '${wordArray[0]} ${wordArray[1][0]}.' 26 | : wordArray[0]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/string/regex_string_extensions.dart: -------------------------------------------------------------------------------- 1 | extension RegexStringExtensions on String { 2 | /// Extract All Digits From a String 3 | String extractDigits() => replaceAll(RegExp(r'\D'), ''); 4 | 5 | /// Remove All Digits From Text 6 | String removeAllDigits() => replaceAll(RegExp(r'\d'), ''); 7 | 8 | /// Remove All Digits From Text 9 | String removeAllWordsStartingWithNumber() => 10 | replaceAll(RegExp(r'\b\d+\w+\b'), '') 11 | .replaceAll(RegExp(r'\s{2,}'), ' ') 12 | .trim(); 13 | 14 | /// Check if String contains only Digits 15 | bool isDigitsOnly() => RegExp(r'^\d+$').hasMatch(this); 16 | 17 | /// Check if String contains only text 18 | bool isTextOnly() => RegExp(r'^[a-zA-Z]+$').hasMatch(this); 19 | 20 | /// Remove all White Spaces 21 | String removeAllWhiteSpaces() => replaceAll(RegExp(r'\s+'), ''); 22 | 23 | /// Get Words from a String 24 | List getWords() => RegExp(r'\b\w+\b') 25 | .allMatches(this) 26 | .map((match) => match.group(0)!) 27 | .toList(); 28 | 29 | /// Split By Upper Case 30 | List splitByUpperCase() => split(RegExp(r'(?=[A-Z])')); 31 | } 32 | -------------------------------------------------------------------------------- /lib/string/string_formatter_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension StringFormatterExtensions on String { 4 | /// Capitalize First Letter 5 | String capitalizeFirstLetter() => 6 | isNotEmpty ? '${this[0].toUpperCase()}${substring(1)}' : this; 7 | 8 | /// Capitalize First Letter of Each Word 9 | String toTitleCase() { 10 | final wordArray = split(' '); 11 | 12 | return wordArray.map((word) => word.capitalizeFirstLetter()).join(' '); 13 | } 14 | 15 | /// Convert Snake case to camel case 16 | String toCamelCase() => split('_').asMap().entries.map((entry) { 17 | return entry.key == 0 18 | ? entry.value 19 | : entry.value.capitalizeFirstLetter(); 20 | }).join(''); 21 | 22 | /// Convert a String to Slug eg. "Hello World!" -> "hello-world" 23 | String toSlug() => toLowerCase() 24 | .replaceAll(RegExp(r'[^a-z0-9]+'), '-') 25 | .replaceAll(RegExp(r'^-+|-+$'), ''); 26 | 27 | /// String to Base64 28 | String toBase64() => base64Encode(utf8.encode(this)); 29 | 30 | /// Decodes a Base64 String 31 | String fromBase64() => utf8.decode(base64Decode(this)); 32 | } 33 | -------------------------------------------------------------------------------- /lib/string/string_transformer_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension StringTransformerExtensionsNullable on String? { 4 | /// With Default Value - Returns a default value if String is Empty or null 5 | String withDefaultValue(String defaultValue) => 6 | (this == null || (this != null && this!.isEmpty)) ? defaultValue : this!; 7 | } 8 | 9 | extension StringTransformerExtensions on String { 10 | /// Add Emoji 11 | String withEmoji(Emoji emoji) => '$this ${emoji.emoji}'; 12 | 13 | /// Encode a String 14 | String withUrlEncoded() => Uri.encodeComponent(this); 15 | 16 | /// Add a Hashtag to String 17 | String withHashtag() => '#${replaceAll(' ', '').trim()}'; 18 | 19 | /// Truncate the String and add Ellipsis if its too long 20 | String withEllipsis(int maxLength) { 21 | if (length <= maxLength) return this; 22 | 23 | return '${substring(0, maxLength)}...'; 24 | } 25 | 26 | /// Wrap a String in brackets 27 | String withBrackets([String left = '(', String right = ')']) => 28 | '$left$this$right'; 29 | 30 | /// Convert String to Ordinal eg. 1st, 2nd, 23rd 31 | String withOrdinal() { 32 | if (isEmpty || !isDigitsOnly()) return this; 33 | 34 | final number = int.parse(this); 35 | 36 | if (number % 100 >= 11 && number % 100 <= 13) return '${this}th'; 37 | 38 | switch (number % 10) { 39 | case 1: 40 | return '${this}st'; 41 | case 2: 42 | return '${this}nd'; 43 | case 3: 44 | return '${this}rd'; 45 | default: 46 | return '${this}th'; 47 | } 48 | } 49 | 50 | /// Ensure String ends with Suffix 51 | String ensureEndsWith(String suffix) { 52 | if (!endsWith(suffix) && isNotEmpty) { 53 | return '$this$suffix'; 54 | } 55 | 56 | return this; 57 | } 58 | 59 | /// Ensure String Starts With Prefix 60 | String ensureStartsWith(String prefix) { 61 | if (!startsWith(prefix) && isNotEmpty) { 62 | return '$prefix$this'; 63 | } 64 | 65 | return this; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /lib/string/validation_string_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ValidationStringExtensions on String { 4 | /// Check if Email is Valid 5 | bool isEmailValid() { 6 | final bool isEmailValid = RegExp( 7 | r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+") 8 | .hasMatch(this); 9 | 10 | return isEmailValid; 11 | } 12 | 13 | /// Check if password is valid 14 | bool isPasswordValid({ 15 | int minLength = 8, 16 | int minUppercase = 1, 17 | int minNumbers = 1, 18 | int minSpecialChars = 1, 19 | }) { 20 | if (length < minLength) return false; 21 | 22 | int uppercaseCount = RegExp(r'[A-Z]').allMatches(this).length; 23 | int numberCount = RegExp(r'\d').allMatches(this).length; 24 | int specialCharCount = 25 | RegExp(r'[!@#\$%^&*(),.?":{}|<>]').allMatches(this).length; 26 | 27 | return uppercaseCount >= minUppercase && 28 | numberCount >= minNumbers && 29 | specialCharCount >= minSpecialChars; 30 | } 31 | 32 | /// Check if String is a valid URL 33 | bool isValidURL() { 34 | final bool isValidURL = RegExp( 35 | r'^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$') 36 | .hasMatch(this); 37 | 38 | return isValidURL; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /lib/widgets/scaffold_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension ScaffoldExtensions on Scaffold { 4 | /// Add Annotated region for the status bar 5 | Widget addAnnotatedRegion( 6 | {Color? statusBarColor, 7 | Brightness? statusBarBrightness, 8 | Color? navigationBarColor, 9 | Brightness? navigationBarBrightness}) { 10 | return AnnotatedRegion( 11 | value: SystemUiOverlayStyle( 12 | statusBarColor: statusBarColor, 13 | statusBarBrightness: statusBarBrightness, 14 | systemNavigationBarColor: navigationBarColor, 15 | systemNavigationBarIconBrightness: navigationBarBrightness), 16 | child: this); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/widgets/text_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension TextExtensions on Text { 4 | /// Add Hyperlinks to text 5 | Text addHyperLinks( 6 | {required List hyperLinkTexts, 7 | bool showUnderline = true, 8 | bool makeBold = false, 9 | Color? hyperLinkColor, 10 | Function(String word)? onHyperlinkClicked}) { 11 | final originalString = data; 12 | final originalStringArray = originalString?.split(' '); 13 | 14 | final text = Text.rich(TextSpan( 15 | children: originalStringArray 16 | ?.map((word) => TextSpan( 17 | text: '$word ', 18 | recognizer: !hyperLinkTexts.contains(word) 19 | ? null 20 | : TapGestureRecognizer() 21 | ?..onTap = () => onHyperlinkClicked!(word), 22 | style: hyperLinkTexts.contains(word) 23 | ? TextStyle( 24 | decoration: 25 | showUnderline ? TextDecoration.underline : null, 26 | fontSize: style?.fontSize, 27 | fontFamily: style?.fontFamily, 28 | fontStyle: style?.fontStyle, 29 | fontWeight: 30 | makeBold ? FontWeight.w800 : style?.fontWeight, 31 | color: hyperLinkColor ?? Colors.blue) 32 | : style)) 33 | .toList())); 34 | 35 | return text; 36 | } 37 | 38 | /// Add Text Marquee 39 | } 40 | -------------------------------------------------------------------------------- /lib/widgets/widget_extensions.dart: -------------------------------------------------------------------------------- 1 | part of '../flutter_extend.dart'; 2 | 3 | extension WidgetExtensions on Widget { 4 | /// Adds a click event to a Widget that, if on the web, will show a mouse pointer 5 | Widget clickableMouse( 6 | {VoidCallback? onTap, 7 | Function(PointerHoverEvent)? onHover, 8 | Function(PointerEnterEvent)? onEnter, 9 | Function(PointerExitEvent)? onExit}) => 10 | onTap == null 11 | ? MouseRegion( 12 | cursor: SystemMouseCursors.click, 13 | onHover: onHover, 14 | onEnter: onEnter, 15 | onExit: onExit, 16 | child: this, 17 | ) 18 | : MouseRegion( 19 | cursor: SystemMouseCursors.click, 20 | onHover: onHover, 21 | onEnter: onEnter, 22 | onExit: onExit, 23 | child: GestureDetector( 24 | onTap: onTap, 25 | child: this, 26 | ), 27 | ); 28 | 29 | /// Add Expanded 30 | Widget expanded({int flex = 1}) => Expanded(flex: flex, child: this); 31 | 32 | /// Add Flexible 33 | Widget flexible({int flex = 1, FlexFit fit = FlexFit.loose}) => 34 | Flexible(flex: flex, fit: fit, child: this); 35 | 36 | /// Add Padding to Widget 37 | Widget padding({EdgeInsetsGeometry padding = const EdgeInsets.all(8)}) => 38 | Padding(padding: padding, child: this); 39 | 40 | /// Align Items depending on Geometry 41 | Widget align({AlignmentGeometry alignment = Alignment.center}) => 42 | Align(alignment: alignment, child: this); 43 | 44 | /// Clip a widget 45 | Widget clip({BorderRadiusGeometry borderRadius = BorderRadius.zero}) => 46 | ClipRRect( 47 | borderRadius: borderRadius, 48 | child: this, 49 | ); 50 | 51 | /// Remove Scrollbar from Scrollable widgets 52 | Widget removeScrollbar(BuildContext context) => ScrollConfiguration( 53 | behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), 54 | child: this); 55 | 56 | /// Add Scrollbar to Scrollable widgets 57 | Widget addScrollbar(BuildContext context) => ScrollConfiguration( 58 | behavior: ScrollConfiguration.of(context).copyWith(scrollbars: true), 59 | child: this); 60 | 61 | /// Visibility 62 | Widget visibility({bool visible = true}) => 63 | Visibility(visible: visible, child: this); 64 | 65 | /// Invisible 66 | Widget invisible() => Visibility(visible: false, child: this); 67 | 68 | /// Visible 69 | Widget visible() => Visibility(visible: true, child: this); 70 | 71 | /// Center a widget 72 | Widget center() => Center(child: this); 73 | 74 | /// Makes the widget selectable 75 | Widget addSelectionArea() => SelectionArea(child: this); 76 | } 77 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_extend 2 | description: "Simple, Efficient Flutter Extensions! Supercharge your Flutter development with a collection of easy-to-use, lightweight, and practical extension methods." 3 | version: 0.1.3 4 | homepage: https://github.com/KenStarry/flutter_extend 5 | 6 | environment: 7 | sdk: ^3.6.0 8 | flutter: ">=1.17.0" 9 | 10 | dependencies: 11 | intl: ^0.19.0 12 | flutter: 13 | sdk: flutter 14 | flutter_animate: ^4.5.2 15 | 16 | dev_dependencies: 17 | flutter_test: 18 | sdk: flutter 19 | flutter_lints: ^5.0.0 20 | 21 | flutter: 22 | 23 | -------------------------------------------------------------------------------- /test/flutter_extend_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | import 'package:flutter_extend/flutter_extend.dart'; 4 | 5 | void main() {} 6 | -------------------------------------------------------------------------------- /test/generators/string_generator_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | group("String", () { 6 | test("Generate Lorem String", () { 7 | final randomString = "".generateLoremIpsum(wordCount: 10); 8 | expect(randomString, 9 | "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do"); 10 | }); 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /test/lists/list_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | group('Sort By (Does not return the list)', () { 6 | test('Return sorted list after invoking the sortBy method', () { 7 | final cars = ["Urus", "BMW", "Aston Martin", "Ferari", "Lambo"]; 8 | cars.sortBy((car) => car); 9 | 10 | expect(cars, ["Aston Martin", "BMW", "Ferari", "Lambo", "Urus"]); 11 | }); 12 | }); 13 | 14 | group('Sort By (Returns the list)', () { 15 | test('Return sorted list after invoking the sortBy method', () { 16 | final cars = ["Urus", "BMW", "Aston Martin", "Ferari", "Lambo"] 17 | .sortByAndReturnSorted(((car) => car)); 18 | 19 | expect(cars, ["Aston Martin", "BMW", "Ferari", "Lambo", "Urus"]); 20 | }); 21 | }); 22 | 23 | group('Chunked Lists', () { 24 | test('Return chunked list after invoking the sortBy method', () { 25 | final cars = 26 | ["Urus", "BMW", "Aston Martin", "Ferari", "Lambo"].chunked(2); 27 | 28 | expect(cars, [ 29 | ['Urus', 'BMW'], 30 | ['Aston Martin', 'Ferari'], 31 | ['Lambo'] 32 | ]); 33 | }); 34 | }); 35 | } 36 | -------------------------------------------------------------------------------- /test/number/number_currency_extensions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | group('To Currency', () { 6 | test("A thousand can be separated into currency with KES as the symbol", 7 | () { 8 | final int amount = 1000; 9 | 10 | expect(amount.toCurrency(decimalPlaces: 0), "KES 1,000"); 11 | }); 12 | 13 | test( 14 | "A thousand can be separated into currency with KES as the symbol and 2 decimal places", 15 | () { 16 | final int amount = 1000; 17 | 18 | expect(amount.toCurrency(decimalPlaces: 2), "KES 1,000.00"); 19 | }); 20 | 21 | test("Passing a null currency symbol returns the number without the symbol", 22 | () { 23 | final int amount = 1000; 24 | 25 | expect(amount.toCurrency(decimalPlaces: 2, currencySymbol: null), 26 | "1,000.00"); 27 | }); 28 | }); 29 | 30 | group("To Abbreviated", () { 31 | test("Abbreviate a million with 1 decimal count returns 1.0M", () { 32 | final int amount = 1000000; 33 | 34 | expect(amount.toAbbreviated(decimalCount: 1), '1.0M'); 35 | }); 36 | 37 | test("Abbreviate a million with 0 decimal count returns 1M", () { 38 | final int amount = 1000000; 39 | 40 | expect(amount.toAbbreviated(decimalCount: 0), '1M'); 41 | }); 42 | 43 | test("Abbreviate a million with 2 decimal counts returns 1.10M", () { 44 | final int amount = 1100000; 45 | 46 | expect(amount.toAbbreviated(decimalCount: 2), '1.10M'); 47 | }); 48 | 49 | test("Abbreviate a billion with 1 decimal count returns 1.1B", () { 50 | final int amount = 1100000000; 51 | 52 | expect(amount.toAbbreviated(decimalCount: 1), '1.1B'); 53 | }); 54 | 55 | test("Abbreviating two hundred thousand with 1 decimal count returns 200K", 56 | () { 57 | final double amount = 200000.00; 58 | 59 | expect(amount.toAbbreviated(decimalCount: 0), '200K'); 60 | }); 61 | 62 | test( 63 | "Abbreviating two hundred thousand with 1 decimal count and lowercase activated returns 200k", 64 | () { 65 | final double amount = 200000.00; 66 | 67 | expect(amount.toAbbreviated(decimalCount: 0, isLowercase: true), '200k'); 68 | }); 69 | 70 | test( 71 | "Abbreviating two hundred thousand with 1 decimal count, lowercase deactivated and with Currency to the Left returns KES 200k", 72 | () { 73 | final double amount = 200000.00; 74 | 75 | expect( 76 | amount.toAbbreviated( 77 | decimalCount: 0, 78 | isLowercase: false, 79 | currencySymbol: 'KES', 80 | currencyDirection: CurrencyDirection.left), 81 | 'KES 200K'); 82 | }); 83 | }); 84 | } 85 | -------------------------------------------------------------------------------- /test/number/number_duration_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_animate/flutter_animate.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | test("Get Days from Duration", () { 6 | final number = 5; 7 | final days = number.days; 8 | 9 | expect(days, Duration(days: 5)); 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /test/string/currency_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 3 | import 'package:flutter_test/flutter_test.dart'; 4 | 5 | void main() { 6 | group('Currency formatter', () { 7 | test( 8 | 'value with commas should be formatted to a number with commas removed', 9 | () { 10 | /// Arrange 11 | final text = '50,000'; 12 | 13 | /// Act 14 | final cleanedNumber = text.cleanNumbers; 15 | 16 | /// Assert 17 | expect(cleanedNumber, '50000'); 18 | }); 19 | 20 | test('add commas efficiently to a number with commas removed', () { 21 | /// Arrange 22 | final text = '50000'; 23 | final text2 = '5000000'; 24 | 25 | /// Act 26 | final formattedNumber = text.thousandNumberFormat; 27 | final formattedNumber2 = text2.thousandNumberFormat; 28 | 29 | /// Assert 30 | expect(formattedNumber, '50,000'); 31 | expect(formattedNumber2, "5,000,000"); 32 | }); 33 | }); 34 | } 35 | -------------------------------------------------------------------------------- /test/string/global_string_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 3 | import 'package:flutter_test/flutter_test.dart'; 4 | 5 | void main() { 6 | group('Last N Characters of a String', () { 7 | test( 8 | 'String of smaller length that the last N Characters returns the String', 9 | () { 10 | /// Arrange 11 | final text = 'Hello'; 12 | 13 | /// Act 14 | final last10Characters = text.getLastNCharacters(10); 15 | 16 | /// Assert 17 | expect(last10Characters, 'Hello'); 18 | }); 19 | }); 20 | 21 | group('Remove All Whitespaces', () { 22 | test('String with spaces in the middle should be removed', () { 23 | final text = 'This is a text with spaces'; 24 | final newText = text.removeAllWhiteSpaces(); 25 | 26 | expect(newText, 'Thisisatextwithspaces'); 27 | }); 28 | 29 | test('String with spaces in the start should be removed', () { 30 | final text = ' Thisisatextwithspaces'; 31 | final newText = text.removeAllWhiteSpaces(); 32 | 33 | expect(newText, 'Thisisatextwithspaces'); 34 | }); 35 | 36 | test('String with spaces in the end should be removed', () { 37 | final text = 'Thisisatextwithspaces '; 38 | final newText = text.removeAllWhiteSpaces(); 39 | 40 | expect(newText, 'Thisisatextwithspaces'); 41 | }); 42 | 43 | test('String with spaces in the start and end only should be removed', () { 44 | final text = ' Thisisatextwithspaces '; 45 | final newText = text.removeAllWhiteSpaces(); 46 | 47 | expect(newText, 'Thisisatextwithspaces'); 48 | }); 49 | 50 | test('String with no spaces should return the same string', () { 51 | final text = 'Thisisatextwithnospaces'; 52 | final newText = text.removeAllWhiteSpaces(); 53 | 54 | expect(newText, 'Thisisatextwithnospaces'); 55 | }); 56 | }); 57 | } 58 | -------------------------------------------------------------------------------- /test/string/regex_string_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/string/regex_string_extensions.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | group('Removing all Digits From a Text', () { 6 | test( 7 | "A string containing numbers should be removed to remain with the string", 8 | () { 9 | final text2 = '123Hello123 Ken24'; 10 | final newText = text2.removeAllWordsStartingWithNumber(); 11 | 12 | expect(newText, "Ken24"); 13 | }); 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /test/string/string_transformer_extensions_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_extend/flutter_extend.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | group("Emoji Tests", () { 6 | test('Add Smile Emoji should return Smile Emoji', () { 7 | final text = 'Hi there'; 8 | final newText = text.withEmoji(EmojiCategory.happy.grin); 9 | 10 | expect(newText, 'Hi there 😄'); 11 | }); 12 | }); 13 | 14 | group("With Default Value", () { 15 | test("Null String returns with the default value", () { 16 | String? text; 17 | 18 | expect(text.withDefaultValue('no text'), 'no text'); 19 | }); 20 | 21 | test("Empty String returns with the default value", () { 22 | String text = ''; 23 | 24 | expect(text.withDefaultValue('no text'), 'no text'); 25 | }); 26 | }); 27 | 28 | group('Ordinals', () { 29 | test("String with Ordinals eg. 1st, 2nd etc", () { 30 | String text = '23'; 31 | 32 | expect(text.withOrdinal(), '23rd'); 33 | }); 34 | 35 | test("Non-Numeric string should not work but return the string", () { 36 | String text = 'Ken 23'; 37 | 38 | expect(text.withOrdinal(), 'Ken 23'); 39 | }); 40 | }); 41 | 42 | group("Ends With", () { 43 | test("Ensure an empty String returns the empty String", () { 44 | final text = ''; 45 | 46 | expect(text.ensureEndsWith(".pdf"), ''); 47 | }); 48 | 49 | test("Ensure a String without the suffix returns the String + the suffix", 50 | () { 51 | final text = 'file'; 52 | 53 | expect(text.ensureEndsWith(".pdf"), 'file.pdf'); 54 | }); 55 | 56 | test("Ensure a String with the suffix returns the String + the suffix", () { 57 | final text = 'file.pdf'; 58 | 59 | expect(text.ensureEndsWith(".pdf"), 'file.pdf'); 60 | }); 61 | }); 62 | 63 | group("Starts With", () { 64 | test("Ensure an empty String returns the empty String", () { 65 | final text = ''; 66 | 67 | expect(text.ensureStartsWith("hey"), ''); 68 | }); 69 | 70 | test("Ensure a String without the prefix returns the String + the prefix", 71 | () { 72 | final text = 'file'; 73 | 74 | expect(text.ensureStartsWith("hey"), 'heyfile'); 75 | }); 76 | 77 | test("Ensure a String with the prefix returns the String + the prefix", () { 78 | final text = 'heyfile.pdf'; 79 | 80 | expect(text.ensureStartsWith("hey"), 'heyfile.pdf'); 81 | }); 82 | }); 83 | 84 | test("Encode a String to URI format", () { 85 | String text = 'hello world'; 86 | 87 | expect(text.withUrlEncoded(), 'hello%20world'); 88 | }); 89 | 90 | test("Add a Hashtag before a text", () { 91 | String text = 'hello world'; 92 | 93 | expect(text.withHashtag(), '#helloworld'); 94 | }); 95 | 96 | test("Add brackets before a text", () { 97 | String text = 'hello world'; 98 | 99 | expect(text.withBrackets('(', ')'), '(hello world)'); 100 | }); 101 | 102 | test("Add ellipsis if the text is too long", () { 103 | String text = 'hello world'; 104 | 105 | expect(text.withEllipsis(8), 'hello wo...'); 106 | }); 107 | } 108 | --------------------------------------------------------------------------------