├── .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 |
--------------------------------------------------------------------------------