Browse Source

修改相机相册的选择方式。
去除微信样式的第三方库。
移除图片和视频权限声明。
安卓测试通过。
切换正式环境,安卓103版本上线

liukai 9 hours ago
parent
commit
42315c6c5e
100 changed files with 2 additions and 4621 deletions
  1. 2 2
      app/android/app/build.gradle
  2. 0 5
      app/android/app/src/main/AndroidManifest.xml
  3. 0 137
      app/plugin_wechat_camera_picker/.all-contributorsrc
  4. 0 2
      app/plugin_wechat_camera_picker/.github/FUNDING.yml
  5. 0 45
      app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/bug-report--bug---.md
  6. 0 1
      app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/config.yml
  7. 0 30
      app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/feature-request-------.md
  8. 0 17
      app/plugin_wechat_camera_picker/.github/workflows/publish.yml
  9. 0 26
      app/plugin_wechat_camera_picker/.github/workflows/publishable.yml
  10. 0 74
      app/plugin_wechat_camera_picker/.github/workflows/runnable.yml
  11. 0 76
      app/plugin_wechat_camera_picker/.gitignore
  12. 0 10
      app/plugin_wechat_camera_picker/.metadata
  13. 0 497
      app/plugin_wechat_camera_picker/CHANGELOG.md
  14. 0 1
      app/plugin_wechat_camera_picker/CODEOWNERS
  15. 0 201
      app/plugin_wechat_camera_picker/LICENSE
  16. 0 243
      app/plugin_wechat_camera_picker/README-ZH.md
  17. 0 282
      app/plugin_wechat_camera_picker/README.md
  18. 0 1
      app/plugin_wechat_camera_picker/_config.yml
  19. 0 17
      app/plugin_wechat_camera_picker/analysis_options.yaml
  20. 0 43
      app/plugin_wechat_camera_picker/example/.gitignore
  21. 0 30
      app/plugin_wechat_camera_picker/example/.metadata
  22. 0 7
      app/plugin_wechat_camera_picker/example/README.md
  23. 0 5
      app/plugin_wechat_camera_picker/example/analysis_options.yaml
  24. 0 7
      app/plugin_wechat_camera_picker/example/android/.gitignore
  25. 0 84
      app/plugin_wechat_camera_picker/example/android/app/build.gradle
  26. 0 45
      app/plugin_wechat_camera_picker/example/android/app/src/main/AndroidManifest.xml
  27. 0 7
      app/plugin_wechat_camera_picker/example/android/app/src/main/kotlin/com/fluttercandies/wechatCameraPickerExample/ExampleAppGlideModule.kt
  28. 0 5
      app/plugin_wechat_camera_picker/example/android/app/src/main/kotlin/com/fluttercandies/wechatCameraPickerExample/MainActivity.kt
  29. 0 12
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/drawable/launch_background.xml
  30. BIN
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  31. BIN
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  32. BIN
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  33. BIN
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  34. BIN
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  35. 0 18
      app/plugin_wechat_camera_picker/example/android/app/src/main/res/values/styles.xml
  36. 0 20
      app/plugin_wechat_camera_picker/example/android/build.gradle
  37. 0 3
      app/plugin_wechat_camera_picker/example/android/gradle.properties
  38. 0 6
      app/plugin_wechat_camera_picker/example/android/gradle/wrapper/gradle-wrapper.properties
  39. BIN
      app/plugin_wechat_camera_picker/example/android/key.jks
  40. 0 31
      app/plugin_wechat_camera_picker/example/android/settings.gradle
  41. BIN
      app/plugin_wechat_camera_picker/example/assets/flutter_candies_logo.png
  42. 0 34
      app/plugin_wechat_camera_picker/example/ios/.gitignore
  43. 0 26
      app/plugin_wechat_camera_picker/example/ios/Flutter/AppFrameworkInfo.plist
  44. 0 2
      app/plugin_wechat_camera_picker/example/ios/Flutter/Debug.xcconfig
  45. 0 2
      app/plugin_wechat_camera_picker/example/ios/Flutter/Release.xcconfig
  46. 0 41
      app/plugin_wechat_camera_picker/example/ios/Podfile
  47. 0 561
      app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.pbxproj
  48. 0 7
      app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  49. 0 8
      app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  50. 0 8
      app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  51. 0 87
      app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  52. 0 10
      app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/contents.xcworkspacedata
  53. 0 8
      app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  54. 0 8
      app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  55. 0 13
      app/plugin_wechat_camera_picker/example/ios/Runner/AppDelegate.swift
  56. 0 122
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  57. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
  58. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
  59. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
  60. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
  61. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
  62. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
  63. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
  64. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
  65. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
  66. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
  67. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
  68. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
  69. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
  70. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
  71. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
  72. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png
  73. 0 23
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  74. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
  75. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
  76. BIN
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
  77. 0 5
      app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
  78. 0 37
      app/plugin_wechat_camera_picker/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
  79. 0 26
      app/plugin_wechat_camera_picker/example/ios/Runner/Base.lproj/Main.storyboard
  80. 0 55
      app/plugin_wechat_camera_picker/example/ios/Runner/Info.plist
  81. 0 1
      app/plugin_wechat_camera_picker/example/ios/Runner/Runner-Bridging-Header.h
  82. 0 8
      app/plugin_wechat_camera_picker/example/l10n.yaml
  83. 0 37
      app/plugin_wechat_camera_picker/example/lib/extensions/color_extension.dart
  84. 0 11
      app/plugin_wechat_camera_picker/example/lib/extensions/l10n_extensions.dart
  85. 0 34
      app/plugin_wechat_camera_picker/example/lib/l10n/app_en.arb
  86. 0 34
      app/plugin_wechat_camera_picker/example/lib/l10n/app_zh.arb
  87. 0 315
      app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations.dart
  88. 0 105
      app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_en.dart
  89. 0 1
      app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_untranslated.json
  90. 0 105
      app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_zh.dart
  91. 0 67
      app/plugin_wechat_camera_picker/example/lib/main.dart
  92. 0 188
      app/plugin_wechat_camera_picker/example/lib/models/picker_method.dart
  93. 0 127
      app/plugin_wechat_camera_picker/example/lib/pages/home_page.dart
  94. 0 56
      app/plugin_wechat_camera_picker/example/lib/pages/splash_page.dart
  95. 0 93
      app/plugin_wechat_camera_picker/example/lib/widgets/asset_widget_builder.dart
  96. 0 97
      app/plugin_wechat_camera_picker/example/lib/widgets/method_list_view.dart
  97. 0 92
      app/plugin_wechat_camera_picker/example/lib/widgets/preview_asset_widget.dart
  98. 0 148
      app/plugin_wechat_camera_picker/example/lib/widgets/selected_assets_list_view.dart
  99. 0 29
      app/plugin_wechat_camera_picker/example/pubspec.yaml
  100. 0 0
      app/plugin_wechat_camera_picker/guides/migration_guide.md

+ 2 - 2
app/android/app/build.gradle

@@ -54,8 +54,8 @@ android {
         applicationId "com.hongyegroup.app24ifm"
         minSdkVersion 21
         targetSdkVersion 35
-        versionCode 102
-        versionName "1.0.2"
+        versionCode 103
+        versionName "1.0.3"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 
         multiDexEnabled true

+ 0 - 5
app/android/app/src/main/AndroidManifest.xml

@@ -4,15 +4,10 @@
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
-    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.CALL_PHONE" />
 
     <!-- Provide required visibility configuration for API level 30 and above -->
     <queries>

+ 0 - 137
app/plugin_wechat_camera_picker/.all-contributorsrc

@@ -1,137 +0,0 @@
-{
-  "files": [
-    "README.md"
-  ],
-  "imageSize": 50,
-  "badgeTemplate": "[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square&logo=github)](#contributors)",
-  "commit": false,
-  "contributors": [
-    {
-      "login": "AlexV525",
-      "name": "Alex Li",
-      "avatar_url": "https://avatars1.githubusercontent.com/u/15884415?v=4",
-      "profile": "https://blog.alexv525.com",
-      "contributions": [
-        "code",
-        "design",
-        "doc",
-        "example",
-        "ideas",
-        "maintenance",
-        "question",
-        "review"
-      ]
-    },
-    {
-      "login": "CaiJingLong",
-      "name": "Caijinglong",
-      "avatar_url": "https://avatars0.githubusercontent.com/u/14145407?v=4",
-      "profile": "https://www.kikt.top",
-      "contributions": [
-        "example",
-        "ideas"
-      ]
-    },
-    {
-      "login": "LaelLuo",
-      "name": "Lael",
-      "avatar_url": "https://avatars3.githubusercontent.com/u/26056971?v=4",
-      "profile": "https://github.com/LaelLuo",
-      "contributions": [
-        "doc"
-      ]
-    },
-    {
-      "login": "mjl0602",
-      "name": "mjl0602",
-      "avatar_url": "https://avatars1.githubusercontent.com/u/32868496?v=4",
-      "profile": "https://github.com/mjl0602",
-      "contributions": [
-        "code",
-        "ideas"
-      ]
-    },
-    {
-      "login": "siyukok",
-      "name": "AliasWang",
-      "avatar_url": "https://avatars0.githubusercontent.com/u/21030561?v=4",
-      "profile": "https://github.com/siyukok",
-      "contributions": [
-        "code",
-        "ideas"
-      ]
-    },
-    {
-      "login": "leftcoding",
-      "name": "leftcoding",
-      "avatar_url": "https://avatars.githubusercontent.com/u/7122926?v=4",
-      "profile": "https://github.com/leftcoding",
-      "contributions": [
-        "bug"
-      ]
-    },
-    {
-      "login": "TheVinhLuong",
-      "name": "Luong The Vinh",
-      "avatar_url": "https://avatars.githubusercontent.com/u/20371879?v=4",
-      "profile": "https://github.com/TheVinhLuong",
-      "contributions": [
-        "code"
-      ]
-    },
-    {
-      "login": "luomo-pro",
-      "name": "luomo-pro",
-      "avatar_url": "https://avatars.githubusercontent.com/u/41097395?v=4",
-      "profile": "https://github.com/luomo-pro",
-      "contributions": [
-        "a11y",
-        "bug"
-      ]
-    },
-    {
-      "login": "ZhuBoao",
-      "name": "LeonardoZhu",
-      "avatar_url": "https://avatars.githubusercontent.com/u/17305573?v=4",
-      "profile": "https://github.com/ZhuBoao",
-      "contributions": [
-        "code"
-      ]
-    },
-    {
-      "login": "nploi",
-      "name": "Nguyen Phuc Loi",
-      "avatar_url": "https://avatars.githubusercontent.com/u/34020090?v=4",
-      "profile": "https://www.linkedin.com/in/loinp",
-      "contributions": [
-        "translation"
-      ]
-    },
-    {
-      "login": "AmosHuKe",
-      "name": "Amos",
-      "avatar_url": "https://avatars.githubusercontent.com/u/32262985?v=4",
-      "profile": "https://amoshk.top",
-      "contributions": [
-        "bug"
-      ]
-    },
-    {
-      "login": "yujune",
-      "name": "Tee Yu June",
-      "avatar_url": "https://avatars.githubusercontent.com/u/56582497?v=4",
-      "profile": "https://github.com/yujune",
-      "contributions": [
-        "code"
-      ]
-    }
-  ],
-  "contributorsPerLine": 7,
-  "projectName": "flutter_wechat_camera_picker",
-  "projectOwner": "fluttercandies",
-  "repoType": "github",
-  "repoHost": "https://github.com",
-  "skipCi": true,
-  "commitConvention": "angular",
-  "commitType": "docs"
-}

+ 0 - 2
app/plugin_wechat_camera_picker/.github/FUNDING.yml

@@ -1,2 +0,0 @@
-github: AlexV525
-custom: ['https://www.alexv525.com/wechat.png', 'https://www.alexv525.com/alipay.jpg']

+ 0 - 45
app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/bug-report--bug---.md

@@ -1,45 +0,0 @@
----
-name: Bug report (BUG模板)
-about: Create a bug report helping us fix it. (创建一个 BUG 报告以帮助我们进行修复)
-title: "[BUG] Error with something"
-labels: await investigate, bug
-
----
-
-**Describe the bug**
-<!-- A clear and concise description of what the bug is.
-     请用精炼的语句准确描述你遇到的BUG。-->
-
-**How to reproduce**
-<!-- Please **provide a minimum demo** rather than
-     **a full project or a incomplete pages**.
-     Otherwise, we won't accept your request.
-     请提供一个 **最简单的 demo** 用于复现,而不要提供 **整个项目或者不完整的页面**,
-     否则我们不会受理你的问题。-->
-
-Steps to reproduce the behavior:
-<!-- 描述复现步骤 -->
-
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. Error occurred.
-
-**Expected behavior**
-<!-- A clear and concise description of what you expected to happen.
-     描述你期望的行为。-->
-
-**Screenshots (If contains)**
-<!-- If applicable, add screenshots to help explain your problem.
-     如有相关截图,请提供它们用于解释问题所在。-->
-
-**Version information**
-
-- Device: [e.g. iPhone X]
-- OS: [e.g. iOS 14.7.1]
-- Package Version: [e.g. 2.4.1]
-- Flutter Version: [e.g. v2.5.0]
-
-**Additional context**
-<!-- Add any other context about the problem here.
-     在此提供更多的内容。 -->

+ 0 - 1
app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/config.yml

@@ -1 +0,0 @@
-blank_issues_enabled: false

+ 0 - 30
app/plugin_wechat_camera_picker/.github/ISSUE_TEMPLATE/feature-request-------.md

@@ -1,30 +0,0 @@
----
-name: Feature request (功能请求)
-about: Request a new feature that the package didn't include. (请求一个依赖并未包含的功能)
-title: "[Feature] Request a feature with something"
-labels: feature, await investigate
-
----
-
-**Version information**
- - Device: *e.g. iPhone X*
- - OS: *e.g. iOS 14.7.1*
- - Package Version: *e.g. v2.4.1*
- - Flutter Version: *e.g. v2.5.0*
-
-**Is your feature request related to a problem?**
-<!-- A clear and concise description if it's related to an exist problem.
-     如果与已有问题有关,请准确描述。-->
-
-**Describe the solution you'd like**
-<!-- A clear and concise description of what you want to happen.
-     描述你期望的解决方案。-->
-
-**Describe alternatives you've considered**
-<!-- A clear and concise description of any alternative solutions
-     or features you've considered.
-     准确描述其他解决方案或你的疑虑。 -->
-
-**Additional context**
-<!-- Add any other context or screenshots about the feature request here.
-     请提供任何你认为需要的附加内容。 -->

+ 0 - 17
app/plugin_wechat_camera_picker/.github/workflows/publish.yml

@@ -1,17 +0,0 @@
-name: Publish
-
-on:
-  release:
-    types: [published]
-  workflow_dispatch:
-
-jobs:
-  publish:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v3
-      - uses: k-paxian/dart-package-publisher@master
-        with:
-          credentialJson: ${{ secrets.CREDENTIAL_JSON }}
-          flutter: true
-          skipTests: true

+ 0 - 26
app/plugin_wechat_camera_picker/.github/workflows/publishable.yml

@@ -1,26 +0,0 @@
-name: Publishable
-
-on:
-  push:
-    branches:
-      - main
-  pull_request:
-    branches:
-      - main
-    paths:
-      - "**.md"
-      - "**.yaml"
-      - "**.yml"
-
-jobs:
-  publish-dry-run:
-    name: Publish dry-run with packages
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v3
-      - uses: k-paxian/dart-package-publisher@master
-        with:
-          credentialJson: 'MockCredentialJson'
-          flutter: true
-          dryRunOnly: true
-          skipTests: true

+ 0 - 74
app/plugin_wechat_camera_picker/.github/workflows/runnable.yml

@@ -1,74 +0,0 @@
-name: Runnable (stable)
-
-on:
-  push:
-    branches:
-      - main
-  pull_request:
-    branches:
-      - main
-  workflow_dispatch:
-
-jobs:
-  analyze:
-    name: Analyze on ${{ matrix.os }}
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ubuntu-latest]
-    steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-java@v3
-        with:
-          distribution: 'zulu'
-          java-version: '17'
-      - uses: subosito/flutter-action@v2
-        with:
-          channel: 'stable'
-      - run: dart --version
-      - run: flutter --version
-      - run: flutter pub get
-      - run: flutter analyze lib example/lib
-
-  test_iOS:
-    needs: analyze
-    name: Test iOS on ${{ matrix.os }}
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [macos-latest]
-    steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-java@v3
-        with:
-          distribution: 'zulu'
-          java-version: '17'
-      - uses: subosito/flutter-action@v2
-        with:
-          architecture: x64
-          channel: 'stable'
-      - run: dart --version
-      - run: flutter --version
-      - run: flutter pub get
-      - run: cd example; flutter build ios --no-codesign
-
-  test_android:
-    needs: analyze
-    name: Test Android on ${{ matrix.os }}
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: [ubuntu-latest]
-    steps:
-      - uses: actions/checkout@v3
-      - uses: actions/setup-java@v3
-        with:
-          distribution: 'zulu'
-          java-version: '17'
-      - uses: subosito/flutter-action@v2
-        with:
-          channel: 'stable'
-      - run: dart --version
-      - run: flutter --version
-      - run: flutter pub get
-      - run: cd example; flutter build apk --debug

+ 0 - 76
app/plugin_wechat_camera_picker/.gitignore

@@ -1,76 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-build/
-
-# Android related
-**/android/**/gradle-wrapper.jar
-**/android/.gradle
-**/android/captures/
-**/android/gradlew
-**/android/gradlew.bat
-**/android/local.properties
-**/android/**/GeneratedPluginRegistrant.java
-
-# iOS/XCode related
-**/ios/**/*.mode1v3
-**/ios/**/*.mode2v3
-**/ios/**/*.moved-aside
-**/ios/**/*.pbxuser
-**/ios/**/*.perspectivev3
-**/ios/**/*sync/
-**/ios/**/.sconsign.dblite
-**/ios/**/.tags*
-**/ios/**/.vagrant/
-**/ios/**/DerivedData/
-**/ios/**/Icon?
-**/ios/**/Pods/
-**/ios/**/.symlinks/
-**/ios/**/profile
-**/ios/**/xcuserdata
-**/ios/.generated/
-**/ios/Flutter/App.framework
-**/ios/Flutter/Flutter.framework
-**/ios/Flutter/Flutter.podspec
-**/ios/Flutter/Generated.xcconfig
-**/ios/Flutter/app.flx
-**/ios/Flutter/app.zip
-**/ios/Flutter/flutter_assets/
-**/ios/Flutter/flutter_export_environment.sh
-**/ios/ServiceDefinitions.json
-**/ios/Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!**/ios/**/default.mode1v3
-!**/ios/**/default.mode2v3
-!**/ios/**/default.pbxuser
-!**/ios/**/default.perspectivev3
-!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
-*.lock

+ 0 - 10
app/plugin_wechat_camera_picker/.metadata

@@ -1,10 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
-  revision: 8af6b2f038c1172e61d418869363a28dffec3cb4
-  channel: stable
-
-project_type: package

+ 0 - 497
app/plugin_wechat_camera_picker/CHANGELOG.md

@@ -1,497 +0,0 @@
-<!-- Copyright 2019 The FlutterCandies author. All rights reserved.
-Use of this source code is governed by an Apache license
-that can be found in the LICENSE file. -->
-
-# Changelog
-
-See the [Migration Guide](guides/migration_guide.md) for breaking changes between versions.
-
-## 4.3.7
-
-### Fixes
-
-- Fix semantics with the capture button.
-- Avoid potential null operations when saving the entity.
-
-## 4.3.6
-
-### Fixes
-
-- Predicate the flash mode correctly when retrying the initialization.
-
-## 4.3.5
-
-### Improvements
-
-- Allows `sensor_plus` v6.
-
-## 4.3.4
-
-### Fixes
-
-- Fix preview file delete predication.
-
-## 4.3.3
-
-### New features
-
-- Adds `CameraPickerConfig.onPickConfirmed` to gets called when an asset entity is confirmed to be picked.
-- Introduces `CameraPickerConfig.permissionRequestOption`.
-
-### Improvements
-
-- Evicts the captured image cache once returned from the viewer.
-- Allows `camera_android: ^0.10.9+6`.
-
-## 4.3.2
-
-### Fixes
-
-- Fix button displays when tap to record.
-- Prevent camera description exceptions when initializing the camera in the lifecycle callback.
-
-### Improvements
-
-- Use more precise overlay styles.
-- Switching between different lens with a single camera by default.
-- Always delete the preview file when popping from the preview.
-
-## 4.3.1
-
-### Improvements
-
-- Downgrades the default resolution preset from `max` to `ultraHigh`.
-- Improves pinch zooming experiences.
-- Do not wait for focus mode and exposure mode to reset.
-- Updates the capture actions section size to compatible with more cases.
-
-## 4.3.0+1
-
-### Fixes
-
-- Fixes the breaking `ColorScheme.background` implementation on older Flutter SDKs.
-
-## 4.3.0
-
-### Improvements
-
-- Adapt the latest interface of WeChat.
-
-### Fixes
-
-- Constraints `camera_android` version to resolves https://github.com/flutter/flutter/issues/150549.
-
-## 4.2.2
-
-### Fixes
-
-- Allows `wrapControllerMethod` to return nullable result.
-- Allows newer versions of `sensors_plus`.
-
-### Improvements
-
-- Provide the back button when no controller has been initialized.
-- Improves paddings of the heading actions in the viewer.
-
-## 4.2.1
-
-### Fixes
-
-- Fix ignore locks when exception throws.
-
-## 4.2.0
-
-### Breaking changes
-
-- Migrate to Flutter 3.16, and drop supports for previous Flutter versions.
-- Bump `photo_manager` to v3.x.
-- Export `photo_manager_image_provider`.
-
-### Improvements
-
-- Roll `sensors_plus`.
-- Catch exceptions when obtain/subscribe to the accelerometer stream.
-- Use `wechat_picker_library`.
-
-### Fixes
-
-- Fix `onEntitySaving` not returned after called. (#223)
-- Predicate access denied to avoid deadlocks.
-
-## 4.1.0
-
-### New features
-
-- Automatically determine the capture orientation and lock accordingly.
-
-### Fixes
-
-- Handle exceptions after all flows.
-- Fix various problems with the capture button.
-
-## 4.0.3
-
-### Fixes
-
-- Prevent duplicate shooting actions.
-
-### Improvements
-
-- Provide overall invalid wrapping for controller methods.
-- Throw exceptions with more accurate stack traces.
-
-## 4.0.2
-
-### Fixes
-
-- Handles exceptions if locking methods are failed.
-
-## 4.0.1
-
-### Fixes
-
-- Fix uncaught exceptions for controller methods.
-
-## 4.0.0
-
-To know more about breaking changes, see [Migration Guide][].
-
-### New features
-
-- Migrate to Flutter 3.3, and drop supports for previous Flutter versions.
-- Sync all UI details from WeChat 8.3.x. (#181)
-
-### Improvements
-
-- Adapt layouts according to the device orientation.
-- Improve the performance when taking photos.
-- Improve the experience when using the exposure slider.
-- Prefer `FlashMode.off` for better performance.
-- Allow `cameras` to be set repeatedly.
-
-### Fixes
-
-- Fix accessibility on the switch cameras button.
-
-## 3.8.0
-
-### New features
-
-- Add Vietnamese language text delegate. (#166).
-- Add `CameraPickerConfig.minimumRecordingDuration`. (#168)
-
-### Improvements
-
-- Hide the loading widget in the preview until an actual saving process has been invoked.
-- Remove the implied system UI overlay manipulations.
-- Raise the lowest SDK constraint to 2.8.0.
-
-## 3.7.0
-
-### New features
-
-- Add `preferredFlashMode`, allowing users to choose which flash mode is preferred when first using the camera. (#158)
-
-### Improvements
-
-- Allow flash modes failed to switch and can move on to next when switching. (#156)
-
-### Fixes
-
-- Fix lifecycle integrations with the camera preview. (#157)
-
-## 3.6.5
-
-### Fixes
-
-- Correct sizes when using `cameraQuarterTurns`. (#149)
-
-## 3.6.4
-
-### Improvements
-
-- Improve stop-capturing experiences. (#146)
-- Precache captured images for better experiences. (#145)
-
-## 3.6.3
-
-### Improvements
-
-- Add the loading indicator when saving. (#140)
-
-## 3.6.2
-
-### Improvements
-
-- Bump `photo_manager` to explicitly remove the requirements of `requiredLegacyExternalStorage`.
-
-## 3.6.1
-
-### New features
-
-- Add torch flashlight support. (#137)
-
-## 3.6.0
-
-### New features
-
-- Upgrade `camera` to `0.10.x`. (#133)
-- Upgrade `photo_maanger` for Android 13. (#133)
-
-## 3.5.0+1
-
-### Fixes
-
-- Fix the too early `widget` access in `CameraPickerState`. (#124)
-
-## 3.5.0
-
-### New features
-
-- Support customize UI by override `State`s. (#113)
-
-### Improvements
-
-- Expose multiple internal widgets. (#113)
-- Re-export `CameraPicker`'s constructor. (#116)
-- Avoid duplicate entity saving. (#117)
-- Prevent switching cameras when taking picture or recording video. (#120)
-
-## 3.4.0
-
-### New features
-
-- Add `enableScaledPreview`. (#108)
-
-### Improvements
-
-- Catch more errors with handler. (#110)
-- Improve tapping exposure updates. (#109)
-- Prevent unnecessary zoom updates. (#107)
-
-## 3.3.0
-
-### Breaking Changes
-
-- Allow the foreground builder to be used all the time (#97) .
-  The signature of the `ForegroundBuilder` has changed
-  but can be easily migrated.
-
-### Improvements
-
-- Allow text delegates to be obtained by `Locale`. (#99)
-
-## 3.2.0+1
-
-### New features
-
-- Support Flutter 3.
-
-## 3.1.0
-
-### New features
-
-- Add `onXFileCaptured`. (#87)
-
-## 3.0.4
-
-### Fixes
-
-- Unify the method to push to the viewer. (#86)
-
-## 3.0.3
-
-### Fixes
-
-- Correct arguments of `EntitySaveCallback`. (#85)
-
-## 3.0.2
-
-### Improvements
-
-- Export enums and typedefs.
-
-## 3.0.1
-
-### Fixes
-
-- Remove redundant dispose with the controller.
-
-## 3.0.0
-
-### New features
-
-- Add full semantics support. (#72)
-- Add `lockCaptureOrientation`, allowing users to determine lock to the specific orientation during captures. (#68)
-- Export `CameraPickerPageRoute`.
-- Abstract `CamearPickerConfig`, which moved all arguments from `pickFromCamera` to `pickerConfig`.
-
-### Improvements
-
-- Improve camera initializes by adding a lock.
-- Tweak asynchronous methods call during initializations.
-- Make camera controllers available as soon as possible.
-
-### Fixes
-
-- Fix scaling issues with turns and orientations.
-- Fix lint issues on Flutter 2.10.
-
-## 2.6.5
-
-- Remove duplicate future requests when saving an entity.
-
-## 2.6.4
-
-- Drop initialize when the controller has been already initialized. (#70)
-
-## 2.6.3
-
-- Fix set exposure point crashes when switching between cameras. (#66)
-
-## 2.6.2
-
-- Bind circular progress color with the theme.
-
-## 2.6.1
-
-- Allow saving entities when the permission is limited on iOS.
-
-## 2.6.0
-
-- Add `preferredLensDirection`, allowing users to choose which lens direction is preferred when first using the camera.
-- Add `enableTapRecording`, allowing users to determine whether to allow the record can start with a single tap.
-- Add `shouldAutoPreviewVideo`, allowing users to determine whether the video should be played instantly in the preview.
-
-## 2.5.2
-
-- Request the permission state again when saving.
-- Provide better experiences when video records need to be prepared.
-
-## 2.5.1
-
-- Fix invalid widgets binding observer caller.
-
-## 2.5.0
-
-- Add `onError` to handle errors during the picking process.
-- `SaveEntityCallback` -> `EntitySaveCallback`.
-- Improve folder structure of the plugin.
-
-## 2.4.2
-
-- Flip the preview if the user is using a front camera.
-
-## 2.4.1
-
-- Handle save exceptions more gracefully.
-- Dispose the controller when previewing for better performance.
-
-## 2.4.0
-
-- Bump `camera` to `0.9.x` .
-- Remove `shouldLockPortrait` in picking.
-
-## 2.3.1
-
-- Expose `enablePullToZoomInRecord` for the `pickFromCamera` method.
-- Trigger shooting preparation only when start recording on iOS.
-
-## 2.3.0
-
-- Expose `useRootNavigator` while picking.
-- Initialize a new controller if failed to stop recording. (#39)
-- Throw or rethrow exceptions that used to be caught. (#41)
-- Update the back icon with preview.
-- Enhance video capture on iOS with preparation.
-
-## 2.2.0
-
-- Add `EntitySaveCallback` for the custom save method.
-
-## 2.1.2
-
-- Improve the UI of the exposure point widget when manually focus.
-
-## 2.1.1
-
-- Use basename when saving entities.
-
-## 2.1.0
-
-- Add `shouldLockPortrait` to fit orientation for the device.
-- Fix exposure offset issue when resetting the exposure point after adjusting the exposure offset manually.
-
-## 2.0.0
-
-### New Features
-
-- Add `enableSetExposure`, allowing users to update the exposure from the point tapped on the screen.
-- Add `enableExposureControlOnPoint`, allowing users to control the exposure offset with an offset slide from the exposure point.
-- Add `enablePinchToZoom`, allowing users to zoom by pinching the screen.
-- Add `enablePullToZoomInRecord`, allowing users to zoom by pulling up when recording video.
-- Add `foregroundBuilder`, allowing users to build customized widgets beyond the camera preview.
-- Add `shouldDeletePreviewFile`, allowing users to choose whether the captured file should be deleted.
-- Sync `imageFormatGroup` from the `camera` plugin.
-
-### Breaking Changes
-
-- Migrate to non-nullable by default.
-- `isAllowRecording` -> `enableRecording`
-- `isOnlyAllowRecording` -> `onlyAllowRecording`
-
-### Fixes
-
-- All fixes from the `camera` plugin.
-
-## 1.3.1
-
-- Constraint dependencies version. #22
-
-## 1.3.0
-
-- Add `enableAudio` parameter to control whether the package will require audio integration. #17
-
-## 1.2.3
-
-- Fix `maximumRecordingDuration` not passed in static method. #14
-
-## 1.2.2
-
-- Raise dependencies versions.
-
-## 1.2.1
-
-- Add `cameraQuarterTurns`.
-
-## 1.2.0
-
-- Expose resolution preset control.
-
-## 1.1.2
-
-- Remove common exports.
-
-## 1.1.1
-
-- Documents update.
-
-## 1.1.0+1
-
-- Link confirm button's text with delegate. Fix #6.
-
-## 1.1.0
-
-- Add `isOnlyAllowRecording` . Resolves #4.
-- Make camera switching available. Resolves #5.
-
-## 1.0.0+1
-
-- Fix potential non exist directory access.
-
-## 1.0.0
-
-- Support taking pictures and videos.
-- Support video recording duration limitation.
-
-[Migration Guide]: guides/migration_guide.md

+ 0 - 1
app/plugin_wechat_camera_picker/CODEOWNERS

@@ -1 +0,0 @@
-* @AlexV525

+ 0 - 201
app/plugin_wechat_camera_picker/LICENSE

@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [2019] [FlutterCandies]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 243
app/plugin_wechat_camera_picker/README-ZH.md

@@ -1,243 +0,0 @@
-<!-- Copyright 2019 The FlutterCandies author. All rights reserved.
-Use of this source code is governed by an Apache license
-that can be found in the LICENSE file. -->
-
-# Flutter WeChat Camera Picker
-
-[![pub package](https://img.shields.io/pub/v/wechat_camera_picker?logo=dart&label=%E7%A8%B3%E5%AE%9A%E7%89%88&style=flat-square)](https://pub.flutter-io.cn/packages/wechat_camera_picker)
-[![pub package](https://img.shields.io/pub/v/wechat_camera_picker?color=42a012&include_prereleases&label=%E5%BC%80%E5%8F%91%E7%89%88&logo=dart&style=flat-square)](https://pub.flutter-io.cn/packages/wechat_camera_picker)
-[![CodeFactor](https://img.shields.io/codefactor/grade/github/fluttercandies/flutter_wechat_camera_picker?logo=codefactor&label=%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F&logoColor=%23ffffff&style=flat-square)](https://www.codefactor.io/repository/github/fluttercandies/flutter_wechat_camera_picker)
-
-[![Build status](https://img.shields.io/github/actions/workflow/status/fluttercandies/flutter_wechat_camera_picker/runnable.yml?branch=main&label=CI&logo=github&style=flat-square)](https://github.com/fluttercandies/flutter_wechat_camera_picker/actions/workflows/runnable.yml)
-[![GitHub license](https://img.shields.io/github/license/fluttercandies/flutter_wechat_camera_picker?style=flat-square&label=%E5%8D%8F%E8%AE%AE)](https://github.com/fluttercandies/flutter_wechat_camera_picker/blob/master/LICENSE)
-[![GitHub stars](https://img.shields.io/github/stars/fluttercandies/flutter_wechat_camera_picker?logo=github&style=flat-square)](https://github.com/fluttercandies/flutter_wechat_camera_picker/stargazers)
-[![GitHub forks](https://img.shields.io/github/forks/fluttercandies/flutter_wechat_camera_picker?logo=github&style=flat-square)](https://github.com/fluttercandies/flutter_wechat_camera_picker/network)
-
-[![Flutter Candies QQ群](https://pub.idqqimg.com/wpa/images/group.png)](https://jq.qq.com/?_wv=1027&k=5bcc0gy)
-
-Language: [English](README.md) | 中文
-
-基于 **微信 UI** 的 Flutter 相机选择器,可以单独运行,
-同时是 [wechat_assets_picker][wechat_assets_picker pub] 的扩展。
-
-当前的界面设计基于的微信版本:**8.0.49**
-界面更新将在微信版本更新后随时进行跟进。
-
-查看 [迁移指南][] 了解如何从破坏性改动中迁移为可用代码。
-
-## 版本兼容
-
-该插件仅保证能与 **stable 渠道的 Flutter SDK** 配合使用。
-我们不会为其他渠道的 Flutter SDK 做实时支持。
-
-|        | 2.8.0 | 3.3.0 | 3.16.0 |
-|--------|:-----:|:-----:|:------:|
-| 4.2.0+ |   ❌   |   ❌   |   ✅    |
-| 4.0.0+ |   ❌   |   ✅   |   ❌    |
-| 3.0.0+ |   ✅   |   ❌   |   ❌    |
-
-## 主要使用的 package
-
-该插件基于这些优秀的 package 构建:
-
-| Name                               | Features    |
-|:-----------------------------------|:------------|
-| [photo_manager][photo_manager pub] | 资源的基础抽象和管理。 |
-| [camera][camera pub]               | 拍摄图片和视频。    |
-| [video_player][video_player pub]   | 播放对应的视频和音频。 |
-
-这些 package 在该插件中的实现已相对稳定。
-如果你在使用中发现于它们相关的问题,
-请先在本插件的问题跟踪中报告相关问题。
-
-<details>
-  <summary>目录列表</summary>
-
-<!-- TOC -->
-* [Flutter WeChat Camera Picker](#flutter-wechat-camera-picker)
-  * [版本兼容](#版本兼容)
-  * [主要使用的 package](#主要使用的-package)
-  * [特性 ✨](#特性-)
-  * [截图 📸](#截图-)
-  * [开始前的注意事项 ‼️](#开始前的注意事项-)
-  * [准备工作 🍭](#准备工作-)
-    * [配置](#配置)
-    * [特别提醒 📝](#特别提醒-)
-  * [使用方法 📖](#使用方法-)
-    * [国际化](#国际化)
-    * [简单的使用方法](#简单的使用方法)
-    * [使用配置](#使用配置)
-    * [使用自定义的 `State`](#使用自定义的-state)
-  * [常见问题 💭](#常见问题-)
-    * [iOS 上的预览在旋转时行为诡异](#ios-上的预览在旋转时行为诡异)
-<!-- TOC -->
-</details>
-
-## 特性 ✨
-
-- ♿ 完整的无障碍支持,包括 **TalkBack** 和 **VoiceOver**
-- ♻️ 支持基于 `State` 重载的全量自定义
-- 🎏 完全可自定义的基于 `ThemeData` 的主题
-- 💚 复刻微信风格(甚至优化了更多的细节)
-- ⚡️ 根据配置调节的性能优化
-- 📷 支持拍照
-- 🎥 支持录像
-  - ⏱ 支持限制录像时间
-  - 🔍 支持录像时缩放
-- ☀️ 支持设置曝光参数
-- 🔍️ 支持捏合缩放
-- 💱 国际化支持
-  - ⏪ RTL 语言支持
-- 🖾 支持自定义前景 widget 构建
-- 🕹️ 保存时拦截自定义操作
-
-## 截图 📸
-
-| ![](https://pic.alexv525.com/202310181547760.jpg) | ![](https://pic.alexv525.com/202310181547670.jpg) | ![](https://pic.alexv525.com/202310181547132.jpg) | ![](https://pic.alexv525.com/202310181547726.jpg) | ![](https://pic.alexv525.com/202310181548711.jpg) |
-|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|
-
-## 开始前的注意事项 ‼️
-
-在开始一切之前,请明确以下两点:
-- 由于理解差异和篇幅限制,并不是所有的内容都会明确地在文档中指出。
-  当你遇到没有找到需求和无法理解的概念时,请先运行项目的示例 example,
-  它可以解决 90% 的常见需求。
-- 该库与 [photo_manager][photo_manager pub] 有强关联性,
-  大部分方法的行为是由 photo_manager 进行控制的,
-  所以请尽可能地确保你了解以下两个类的概念:
-  - 资源(图片/视频/音频) [`AssetEntity`](https://pub.flutter-io.cn/documentation/photo_manager/latest/photo_manager/AssetEntity-class.html)
-  - 资源合集(相册或集合概念) [`AssetPathEntity`](https://pub.flutter-io.cn/documentation/photo_manager/latest/photo_manager/AssetPathEntity-class.html)
-
-当你有与相关的 API 和行为的疑问时,你可以查看
-[photo_manager API 文档][] 了解更多细节。
-
-众多使用场景都已包含在示例中。
-在你提出任何问题之前,请仔细并完整地查看和使用示例。
-
-## 准备工作 🍭
-
-如果在 `flutter pub get` 时遇到了 `resolve conflict` 失败问题,
-请使用 `dependency_overrides` 解决。
-
-### 配置
-
-执行 `flutter pub add wechat_camera_picker`,
-或者将 `wechat_camera_picker` 手动添加至 `pubspec.yaml` 引用。
-```yaml
-dependencies:
-  wechat_camera_picker: ^latest_version
-```
-
-最新的 **稳定** 版本是:
-[![pub package](https://img.shields.io/pub/v/wechat_camera_picker?logo=dart&label=stable&style=flat-square)](https://pub.flutter-io.cn/packages/wechat_camera_picker)
-
-最新的 **开发** 版本是:
-[![pub package](https://img.shields.io/pub/v/wechat_camera_picker?color=9d00ff&include_prereleases&label=dev&logo=dart&style=flat-square)](https://pub.flutter-io.cn/packages/wechat_camera_picker)
-
-运行前,按照这些步骤逐一配置:
-- [wechat_assets_picker#准备工作](https://github.com/fluttercandies/flutter_wechat_assets_picker/blob/master/README-ZH.md#preparing-for-use-)
-- [camera#installation](https://pub.flutter-io.cn/packages/camera#installation)
-
-在你的代码中导入:
-
-```dart
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-```
-
-### 特别提醒 📝
-
-1. 在 iOS 上使用 `NSPhotoLibraryAddUsageDescription` 时,
-   需要使用 `onEntitySaving` 或 `onXFileCaptured` 来处理捕获的文件,
-   在这种情况下 `AssetEntity` 不可用,使用其 ID 获取该资源将导致崩溃。
-
-## 使用方法 📖
-
-### 国际化
-
-当你在选择资源的时候,package 会通过你的 `BuildContext`
-读取 `Locale?`,返回对应语言的文字代理实现。
-请确保你可以通过 `BuildContext` 获取到 `Locale`,否则将会 **默认展示中文文字**。
-
-内置的语言文字实现有:
-* 简体中文 (默认)
-* English
-* Tiếng Việt
-
-如果你想使用自定义或固定的文字实现,请通过
-`CameraPickerConfig.textDelegate` 传递调用。
-
-### 简单的使用方法
-
-```dart
-final AssetEntity? entity = await CameraPicker.pickFromCamera(context);
-```
-
-### 使用配置
-
-你可以使用 `CameraPickerConfig` 来调整选择时的行为。
-
-```dart
-final AssetEntity? entity = await CameraPicker.pickFromCamera(
-  context,
-  pickerConfig: const CameraPickerConfig(),
-);
-```
-
-`CameraPickerConfig` 的成员说明:
-
-| 参数名                           | 类型                            | 描述                                                 | 默认值                                        |
-|-------------------------------|-------------------------------|----------------------------------------------------|--------------------------------------------|
-| enableRecording               | `bool`                        | 选择器是否可以录像                                          | `false`                                    |
-| onlyEnableRecording           | `bool`                        | 选择器是否仅可以录像。只在 `enableRecording` 为 `true` 时有效。      | `false`                                    |
-| enableTapRecording            | `bool`                        | 选择器是否可以单击录像。只在 `onlyEnableRecording` 为 `true` 时生效。 | `false`                                    |
-| enableAudio                   | `bool`                        | 选择器是否需要录制音频。只在 `enableRecording` 为 `true` 时有效。     | `true`                                     |
-| enableSetExposure             | `bool`                        | 用户是否可以在界面上通过点击设定曝光点                                | `true`                                     |
-| enableExposureControlOnPoint  | `bool`                        | 用户是否可以根据已经设置的曝光点调节曝光度                              | `true`                                     |
-| enablePinchToZoom             | `bool`                        | 用户是否可以在界面上双指缩放相机对焦                                 | `true`                                     |
-| enablePullToZoomInRecord      | `bool`                        | 用户是否可以在录制视频时上拉缩放                                   | `true`                                     |
-| enableScaledPreview           | `bool`                        | 拍摄过程中相机预览是否需要缩放                                    | `false`                                    |
-| shouldDeletePreviewFile       | `bool`                        | 返回页面时是否删除预览文件                                      | `false`                                    |
-| shouldAutoPreviewVideo        | `bool`                        | 在预览时是否直接播放视频                                       | `true`                                     |
-| maximumRecordingDuration      | `Duration?`                   | 录制视频最长时长                                           | `const Duration(seconds: 15)`              |
-| minimumRecordingDuration      | `Duration`                    | 录制视频最短时长                                           | `const Duration(seconds: 1)`               |
-| theme                         | `ThemeData?`                  | 选择器的主题                                             | `CameraPicker.themeData(wechatThemeColor)` |
-| textDelegate                  | `CameraPickerTextDelegate?`   | 控制部件中的文字实现                                         | `CameraPickerTextDelegate`                 |
-| resolutionPreset              | `ResolutionPreset`            | 相机的分辨率预设                                           | `ResolutionPreset.ultraHigh`               |
-| cameraQuarterTurns            | `int`                         | 摄像机视图顺时针旋转次数,每次 90 度                               | `0`                                        |
-| imageFormatGroup              | `ImageFormatGroup`            | 输出图像的格式描述                                          | `ImageFormatGroup.unknown`                 |
-| preferredLensDirection        | `CameraLensDirection`         | 首次使用相机时首选的镜头方向                                     | `CameraLensDirection.back`                 |
-| lockCaptureOrientation        | `DeviceOrientation?`          | 摄像机在拍摄时锁定的旋转角度                                     | null                                       |
-| foregroundBuilder             | `ForegroundBuilder?`          | 覆盖在相机预览上方的前景构建                                     | null                                       |
-| previewTransformBuilder       | `PreviewTransformBuilder?`    | 对相机预览做变换的构建                                        | null                                       |
-| onEntitySaving                | `EntitySaveCallback?`         | 在查看器中保存图片时的回调                                      | null                                       |
-| onError                       | `CameraErrorHandler?`         | 拍摄照片过程中的自定义错误处理                                    | null                                       |
-| onXFileCaptured               | `XFileCapturedCallback?`      | 拍摄文件生成后的回调                                         | null                                       |
-| onMinimumRecordDurationNotMet | `VoidCallback?`               | 录制时长未达到最小时长时的回调方法                                  | null                                       |
-| onPickConfirmed               | `void Function(AssetEntity)?` | 拍照或录像确认时的回调方法。                                     | null                                       |
-| permissionRequestOption       | `PermissionRequestOption?`    | 使用 `photo_manager` 保存拍摄的文件的权限请求配置                  | null                                       |
-
-### 使用自定义的 `State`
-
-所有的用户界面都可以通过自定义 `State` 实现,包括:
-- `CameraPickerState`
-- `CameraPickerViewerState`
-
-在完成 `State` 的重载后,可以在调用时进行构建,具体来说:
-- `CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());`
-- `CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());`
-
-## 常见问题 💭
-
-### iOS 上的预览在旋转时行为诡异
-
-目前,iOS 上的预览画面在旋转时并未正确地同步,
-你可以在这个 issue 里了解更多相关的信息:
-https://github.com/flutter/flutter/issues/89216 。
-除此之外的问题,你可以提交 issue 进行提问。
-
-[wechat_assets_picker pub]: https://pub.flutter-io.cn/packages/wechat_assets_picker
-[photo_manager pub]: https://pub.flutter-io.cn/packages/photo_manager
-[camera pub]: https://pub.flutter-io.cn/packages/camera
-[video_player pub]: https://pub.flutter-io.cn/packages/video_player
-[迁移指南]: https://github.com/fluttercandies/flutter_wechat_camera_picker/blob/main/guides/migration_guide.md
-[photo_manager API 文档]: https://pub.flutter-io.cn/documentation/photo_manager/latest/

File diff suppressed because it is too large
+ 0 - 282
app/plugin_wechat_camera_picker/README.md


+ 0 - 1
app/plugin_wechat_camera_picker/_config.yml

@@ -1 +0,0 @@
-theme: jekyll-theme-cayman

+ 0 - 17
app/plugin_wechat_camera_picker/analysis_options.yaml

@@ -1,17 +0,0 @@
-include: package:flutter_lints/flutter.yaml
-
-linter:
-  rules:
-    always_declare_return_types: true
-    flutter_style_todos: true
-    library_private_types_in_public_api: false
-    prefer_final_fields: true
-    prefer_final_in_for_each: true
-    prefer_final_locals: true
-    prefer_single_quotes: true
-    require_trailing_commas: true
-    sort_child_properties_last: true
-    sort_constructors_first: true
-    sort_unnamed_constructors_first: true
-    unnecessary_late: true
-    use_build_context_synchronously: false

+ 0 - 43
app/plugin_wechat_camera_picker/example/.gitignore

@@ -1,43 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Web related
-lib/generated_plugin_registrant.dart
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Exceptions to above rules.
-!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages

+ 0 - 30
app/plugin_wechat_camera_picker/example/.metadata

@@ -1,30 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
-  revision: "54e66469a933b60ddf175f858f82eaeb97e48c8d"
-  channel: "stable"
-
-project_type: app
-
-# Tracks metadata for the flutter migrate command
-migration:
-  platforms:
-    - platform: root
-      create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
-      base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
-    - platform: ios
-      create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
-      base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
-
-  # User provided section
-
-  # List of Local paths (relative to this file) that should be
-  # ignored by the migrate tool.
-  #
-  # Files that are not part of the templates will be ignored by default.
-  unmanaged_files:
-    - 'lib/main.dart'
-    - 'ios/Runner.xcodeproj/project.pbxproj'

+ 0 - 7
app/plugin_wechat_camera_picker/example/README.md

@@ -1,7 +0,0 @@
-<!-- Copyright 2019 The FlutterCandies author. All rights reserved.
-Use of this source code is governed by an Apache license
-that can be found in the LICENSE file. -->
-
-# WeChat Camera Picker example
-
-This is the example for the `wechat_camera_picker` package.

+ 0 - 5
app/plugin_wechat_camera_picker/example/analysis_options.yaml

@@ -1,5 +0,0 @@
-include: ../analysis_options.yaml
-
-analyzer:
-  exclude:
-    - lib/l10n/gen/*.dart

+ 0 - 7
app/plugin_wechat_camera_picker/example/android/.gitignore

@@ -1,7 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java

+ 0 - 84
app/plugin_wechat_camera_picker/example/android/app/build.gradle

@@ -1,84 +0,0 @@
-package plugin_wechat_camera_picker.example.android.app
-
-plugins {
-    id "com.android.application"
-    id "kotlin-android"
-    id "kotlin-kapt"
-    id "dev.flutter.flutter-gradle-plugin"
-}
-
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
-    localPropertiesFile.withReader('UTF-8') { reader ->
-        localProperties.load(reader)
-    }
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
-    flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
-    flutterVersionName = '1.0'
-}
-
-android {
-    namespace "com.fluttercandies.wechatCameraPickerExample"
-
-    compileSdkVersion 34
-
-    sourceSets {
-        main.java.srcDirs += 'src/main/kotlin'
-    }
-
-    defaultConfig {
-        applicationId "com.fluttercandies.wechatCameraPickerExample"
-        minSdkVersion 21
-        targetSdkVersion 34
-        versionCode flutterVersionCode.toInteger()
-        versionName flutterVersionName
-    }
-
-    kotlinOptions {
-        jvmTarget = '17'
-    }
-
-    compileOptions {
-        // Sets Java compatibility to Java 17
-        sourceCompatibility JavaVersion.VERSION_17
-        targetCompatibility JavaVersion.VERSION_17
-    }
-
-    signingConfigs {
-        forAll {
-            storeFile file("${rootDir.absolutePath}/key.jks")
-            storePassword 'picker'
-            keyAlias 'picker'
-            keyPassword 'picker'
-        }
-    }
-
-    buildTypes {
-        debug {
-            signingConfig signingConfigs.forAll
-        }
-        profile {
-            signingConfig signingConfigs.forAll
-        }
-        release {
-            signingConfig signingConfigs.forAll
-        }
-    }
-}
-
-flutter {
-    source '../..'
-}
-
-dependencies {
-    implementation 'com.github.bumptech.glide:glide:4.15.0'
-    kapt 'com.github.bumptech.glide:compiler:4.15.0'
-}

+ 0 - 45
app/plugin_wechat_camera_picker/example/android/app/src/main/AndroidManifest.xml

@@ -1,45 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.fluttercandies.wechatCameraPickerExample">
-
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.FLASHLIGHT" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
-
-    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
-    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
-
-    <uses-feature
-        android:name="android.hardware.camera"
-        android:required="true"/>
-
-    <application
-        android:label="Wechat Camera Picker Example"
-        android:icon="@mipmap/ic_launcher"
-        android:allowBackup="false">
-        <activity
-            android:name=".MainActivity"
-            android:launchMode="singleTop"
-            android:theme="@style/LaunchTheme"
-            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
-            android:hardwareAccelerated="true"
-            android:windowSoftInputMode="adjustResize"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-            <!-- Specifies an Android theme to apply to this Activity as soon as
-                 the Android process has started. This theme is visible to the user
-                 while the Flutter UI initializes. After that, this theme continues
-                 to determine the Window background behind the Flutter UI. -->
-            <meta-data
-                android:name="io.flutter.embedding.android.NormalTheme"
-                android:resource="@style/NormalTheme" />
-        </activity>
-        <!-- Don't delete the meta-data below.
-             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
-        <meta-data
-            android:name="flutterEmbedding"
-            android:value="2" />
-    </application>
-</manifest>

+ 0 - 7
app/plugin_wechat_camera_picker/example/android/app/src/main/kotlin/com/fluttercandies/wechatCameraPickerExample/ExampleAppGlideModule.kt

@@ -1,7 +0,0 @@
-package com.fluttercandies.wechatCameraPickerExample
-
-import com.bumptech.glide.annotation.GlideModule
-import com.bumptech.glide.module.AppGlideModule
-
-@GlideModule
-class ExampleAppGlideModule : AppGlideModule()

+ 0 - 5
app/plugin_wechat_camera_picker/example/android/app/src/main/kotlin/com/fluttercandies/wechatCameraPickerExample/MainActivity.kt

@@ -1,5 +0,0 @@
-package com.fluttercandies.wechatCameraPickerExample
-
-import io.flutter.embedding.android.FlutterActivity
-
-class MainActivity: FlutterActivity()

+ 0 - 12
app/plugin_wechat_camera_picker/example/android/app/src/main/res/drawable/launch_background.xml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@android:color/white" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
-</layer-list>

BIN
app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
app/plugin_wechat_camera_picker/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


+ 0 - 18
app/plugin_wechat_camera_picker/example/android/app/src/main/res/values/styles.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- Theme applied to the Android Window while the process is starting -->
-    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <!-- Show a splash screen on the activity. Automatically removed when
-             Flutter draws its first frame -->
-        <item name="android:windowBackground">@drawable/launch_background</item>
-    </style>
-    <!-- Theme applied to the Android Window as soon as the process has started.
-         This theme determines the color of the Android Window while your
-         Flutter UI initializes, as well as behind your Flutter UI while its
-         running.
-         
-         This Theme is only used starting with V2 of Flutter's Android embedding. -->
-    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
-        <item name="android:windowBackground">@android:color/white</item>
-    </style>
-</resources>

+ 0 - 20
app/plugin_wechat_camera_picker/example/android/build.gradle

@@ -1,20 +0,0 @@
-package plugin_wechat_camera_picker.example.android
-
-allprojects {
-    repositories {
-        google()
-        mavenCentral()
-    }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
-    project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
-    project.evaluationDependsOn(':app')
-}
-
-tasks.register("clean", Delete) {
-    delete rootProject.buildDir
-}

+ 0 - 3
app/plugin_wechat_camera_picker/example/android/gradle.properties

@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.useAndroidX=true
-android.enableJetifier=true

+ 0 - 6
app/plugin_wechat_camera_picker/example/android/gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +0,0 @@
-#Fri Jun 23 08:50:38 CEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip

BIN
app/plugin_wechat_camera_picker/example/android/key.jks


+ 0 - 31
app/plugin_wechat_camera_picker/example/android/settings.gradle

@@ -1,31 +0,0 @@
-package plugin_wechat_camera_picker.example.android
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-pluginManagement {
-    def flutterSdkPath = {
-        def properties = new Properties()
-        file("local.properties").withInputStream { properties.load(it) }
-        def flutterSdkPath = properties.getProperty("flutter.sdk")
-        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-        return flutterSdkPath
-    }
-    settings.ext.flutterSdkPath = flutterSdkPath()
-
-    includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
-
-    repositories {
-        google()
-        mavenCentral()
-        gradlePluginPortal()
-    }
-}
-
-plugins {
-    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
-    id "com.android.application" version "8.2.2" apply false
-    id "org.jetbrains.kotlin.android" version "1.9.20" apply false
-}
-
-include ":app"

BIN
app/plugin_wechat_camera_picker/example/assets/flutter_candies_logo.png


+ 0 - 34
app/plugin_wechat_camera_picker/example/ios/.gitignore

@@ -1,34 +0,0 @@
-**/dgph
-*.mode1v3
-*.mode2v3
-*.moved-aside
-*.pbxuser
-*.perspectivev3
-**/*sync/
-.sconsign.dblite
-.tags*
-**/.vagrant/
-**/DerivedData/
-Icon?
-**/Pods/
-**/.symlinks/
-profile
-xcuserdata
-**/.generated/
-Flutter/App.framework
-Flutter/Flutter.framework
-Flutter/Flutter.podspec
-Flutter/Generated.xcconfig
-Flutter/ephemeral/
-Flutter/app.flx
-Flutter/app.zip
-Flutter/flutter_assets/
-Flutter/flutter_export_environment.sh
-ServiceDefinitions.json
-Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!default.mode1v3
-!default.mode2v3
-!default.pbxuser
-!default.perspectivev3

+ 0 - 26
app/plugin_wechat_camera_picker/example/ios/Flutter/AppFrameworkInfo.plist

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-  <key>CFBundleDevelopmentRegion</key>
-  <string>en</string>
-  <key>CFBundleExecutable</key>
-  <string>App</string>
-  <key>CFBundleIdentifier</key>
-  <string>io.flutter.flutter.app</string>
-  <key>CFBundleInfoDictionaryVersion</key>
-  <string>6.0</string>
-  <key>CFBundleName</key>
-  <string>App</string>
-  <key>CFBundlePackageType</key>
-  <string>FMWK</string>
-  <key>CFBundleShortVersionString</key>
-  <string>1.0</string>
-  <key>CFBundleSignature</key>
-  <string>????</string>
-  <key>CFBundleVersion</key>
-  <string>1.0</string>
-  <key>MinimumOSVersion</key>
-  <string>12.0</string>
-</dict>
-</plist>

+ 0 - 2
app/plugin_wechat_camera_picker/example/ios/Flutter/Debug.xcconfig

@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "Generated.xcconfig"

+ 0 - 2
app/plugin_wechat_camera_picker/example/ios/Flutter/Release.xcconfig

@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "Generated.xcconfig"

+ 0 - 41
app/plugin_wechat_camera_picker/example/ios/Podfile

@@ -1,41 +0,0 @@
-# Uncomment this line to define a global platform for your project
-platform :ios, '12.0'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
-  'Debug' => :debug,
-  'Profile' => :release,
-  'Release' => :release,
-}
-
-def flutter_root
-  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
-  unless File.exist?(generated_xcode_build_settings_path)
-    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
-  end
-
-  File.foreach(generated_xcode_build_settings_path) do |line|
-    matches = line.match(/FLUTTER_ROOT\=(.*)/)
-    return matches[1].strip if matches
-  end
-  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_ios_podfile_setup
-
-target 'Runner' do
-  use_frameworks!
-  use_modular_headers!
-
-  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
-end
-
-post_install do |installer|
-  installer.pods_project.targets.each do |target|
-    flutter_additional_ios_build_settings(target)
-  end
-end

+ 0 - 561
app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.pbxproj

@@ -1,561 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 54;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
-		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
-		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
-		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
-		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
-		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
-		DE0083F8287AACE5E372BC08 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28EF12B86832223EF984DA78 /* Pods_Runner.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-			);
-			name = "Embed Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
-		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
-		28EF12B86832223EF984DA78 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		2D98E0330079ED446B07CDD0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
-		2DF77FA1A055B71B2003BAB4 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
-		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
-		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
-		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
-		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
-		85B9EB071C87E3071B5E5EA9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
-		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
-		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
-		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
-		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
-		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		97C146EB1CF9000F007C117D /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				DE0083F8287AACE5E372BC08 /* Pods_Runner.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		063E9DFF1D157100700C18F3 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				28EF12B86832223EF984DA78 /* Pods_Runner.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		4440CA71AB73CD77CD394B64 /* Pods */ = {
-			isa = PBXGroup;
-			children = (
-				2D98E0330079ED446B07CDD0 /* Pods-Runner.debug.xcconfig */,
-				85B9EB071C87E3071B5E5EA9 /* Pods-Runner.release.xcconfig */,
-				2DF77FA1A055B71B2003BAB4 /* Pods-Runner.profile.xcconfig */,
-			);
-			path = Pods;
-			sourceTree = "<group>";
-		};
-		9740EEB11CF90186004384FC /* Flutter */ = {
-			isa = PBXGroup;
-			children = (
-				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
-				9740EEB21CF90195004384FC /* Debug.xcconfig */,
-				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
-				9740EEB31CF90195004384FC /* Generated.xcconfig */,
-			);
-			name = Flutter;
-			sourceTree = "<group>";
-		};
-		97C146E51CF9000F007C117D = {
-			isa = PBXGroup;
-			children = (
-				9740EEB11CF90186004384FC /* Flutter */,
-				97C146F01CF9000F007C117D /* Runner */,
-				97C146EF1CF9000F007C117D /* Products */,
-				4440CA71AB73CD77CD394B64 /* Pods */,
-				063E9DFF1D157100700C18F3 /* Frameworks */,
-			);
-			sourceTree = "<group>";
-		};
-		97C146EF1CF9000F007C117D /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				97C146EE1CF9000F007C117D /* Runner.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		97C146F01CF9000F007C117D /* Runner */ = {
-			isa = PBXGroup;
-			children = (
-				97C146FA1CF9000F007C117D /* Main.storyboard */,
-				97C146FD1CF9000F007C117D /* Assets.xcassets */,
-				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
-				97C147021CF9000F007C117D /* Info.plist */,
-				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
-				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
-				74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
-				74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
-			);
-			path = Runner;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		97C146ED1CF9000F007C117D /* Runner */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
-			buildPhases = (
-				E2B36657A316D9B98DF5E525 /* [CP] Check Pods Manifest.lock */,
-				9740EEB61CF901F6004384FC /* Run Script */,
-				97C146EA1CF9000F007C117D /* Sources */,
-				97C146EB1CF9000F007C117D /* Frameworks */,
-				97C146EC1CF9000F007C117D /* Resources */,
-				9705A1C41CF9048500538489 /* Embed Frameworks */,
-				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
-				021C4D94871CB106E79045E3 /* [CP] Embed Pods Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = Runner;
-			productName = Runner;
-			productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		97C146E61CF9000F007C117D /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				BuildIndependentTargetsInParallel = YES;
-				LastUpgradeCheck = 1510;
-				ORGANIZATIONNAME = "";
-				TargetAttributes = {
-					97C146ED1CF9000F007C117D = {
-						CreatedOnToolsVersion = 7.3.1;
-						LastSwiftMigration = 1100;
-					};
-				};
-			};
-			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
-			compatibilityVersion = "Xcode 9.3";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = 97C146E51CF9000F007C117D;
-			productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				97C146ED1CF9000F007C117D /* Runner */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		97C146EC1CF9000F007C117D /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
-				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
-				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
-				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		021C4D94871CB106E79045E3 /* [CP] Embed Pods Frameworks */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
-			);
-			name = "[CP] Embed Pods Frameworks";
-			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
-		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
-			isa = PBXShellScriptBuildPhase;
-			alwaysOutOfDate = 1;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-				"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
-			);
-			name = "Thin Binary";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
-		};
-		9740EEB61CF901F6004384FC /* Run Script */ = {
-			isa = PBXShellScriptBuildPhase;
-			alwaysOutOfDate = 1;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "Run Script";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
-		};
-		E2B36657A316D9B98DF5E525 /* [CP] Check Pods Manifest.lock */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-			);
-			inputPaths = (
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
-				"${PODS_ROOT}/Manifest.lock",
-			);
-			name = "[CP] Check Pods Manifest.lock";
-			outputFileListPaths = (
-			);
-			outputPaths = (
-				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
-			showEnvVarsInLog = 0;
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		97C146EA1CF9000F007C117D /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
-				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		97C146FA1CF9000F007C117D /* Main.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				97C146FB1CF9000F007C117D /* Base */,
-			);
-			name = Main.storyboard;
-			sourceTree = "<group>";
-		};
-		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				97C147001CF9000F007C117D /* Base */,
-			);
-			name = LaunchScreen.storyboard;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		249021D3217E4FDB00AE95B9 /* Profile */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_USER_SCRIPT_SANDBOXING = NO;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				SDKROOT = iphoneos;
-				SUPPORTED_PLATFORMS = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Profile;
-		};
-		249021D4217E4FDB00AE95B9 /* Profile */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 64MAFNBS88;
-				ENABLE_BITCODE = NO;
-				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.fluttercandies.wechatCameraPickerDemo;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
-				SWIFT_VERSION = 5.0;
-				VERSIONING_SYSTEM = "apple-generic";
-			};
-			name = Profile;
-		};
-		97C147031CF9000F007C117D /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				ENABLE_USER_SCRIPT_SANDBOXING = NO;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				MTL_ENABLE_DEBUG_INFO = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
-		97C147041CF9000F007C117D /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_USER_SCRIPT_SANDBOXING = NO;
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 12.0;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				SDKROOT = iphoneos;
-				SUPPORTED_PLATFORMS = iphoneos;
-				SWIFT_COMPILATION_MODE = wholemodule;
-				SWIFT_OPTIMIZATION_LEVEL = "-O";
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-		97C147061CF9000F007C117D /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 64MAFNBS88;
-				ENABLE_BITCODE = NO;
-				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.fluttercandies.wechatCameraPickerDemo;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
-				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
-				SWIFT_VERSION = 5.0;
-				VERSIONING_SYSTEM = "apple-generic";
-			};
-			name = Debug;
-		};
-		97C147071CF9000F007C117D /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				CLANG_ENABLE_MODULES = YES;
-				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 64MAFNBS88;
-				ENABLE_BITCODE = NO;
-				INFOPLIST_FILE = Runner/Info.plist;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.fluttercandies.wechatCameraPickerDemo;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
-				SWIFT_VERSION = 5.0;
-				VERSIONING_SYSTEM = "apple-generic";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				97C147031CF9000F007C117D /* Debug */,
-				97C147041CF9000F007C117D /* Release */,
-				249021D3217E4FDB00AE95B9 /* Profile */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				97C147061CF9000F007C117D /* Debug */,
-				97C147071CF9000F007C117D /* Release */,
-				249021D4217E4FDB00AE95B9 /* Profile */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 97C146E61CF9000F007C117D /* Project object */;
-}

+ 0 - 7
app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "self:">
-   </FileRef>
-</Workspace>

+ 0 - 8
app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 8
app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>PreviewsEnabled</key>
-	<false/>
-</dict>
-</plist>

+ 0 - 87
app/plugin_wechat_camera_picker/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1510"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "97C146ED1CF9000F007C117D"
-               BuildableName = "Runner.app"
-               BlueprintName = "Runner"
-               ReferencedContainer = "container:Runner.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
-            BuildableName = "Runner.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
-            BuildableName = "Runner.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Profile"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
-            BuildableName = "Runner.app"
-            BlueprintName = "Runner"
-            ReferencedContainer = "container:Runner.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 10
app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/contents.xcworkspacedata

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "group:Runner.xcodeproj">
-   </FileRef>
-   <FileRef
-      location = "group:Pods/Pods.xcodeproj">
-   </FileRef>
-</Workspace>

+ 0 - 8
app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 8
app/plugin_wechat_camera_picker/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>PreviewsEnabled</key>
-	<false/>
-</dict>
-</plist>

+ 0 - 13
app/plugin_wechat_camera_picker/example/ios/Runner/AppDelegate.swift

@@ -1,13 +0,0 @@
-import UIKit
-import Flutter
-
-@main
-@objc class AppDelegate: FlutterAppDelegate {
-  override func application(
-    _ application: UIApplication,
-    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
-  ) -> Bool {
-    GeneratedPluginRegistrant.register(with: self)
-    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
-  }
-}

+ 0 - 122
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,122 +0,0 @@
-{
-  "images" : [
-    {
-      "size" : "20x20",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-20x20@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "20x20",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-20x20@3x.png",
-      "scale" : "3x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-29x29@1x.png",
-      "scale" : "1x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-29x29@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-29x29@3x.png",
-      "scale" : "3x"
-    },
-    {
-      "size" : "40x40",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-40x40@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "40x40",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-40x40@3x.png",
-      "scale" : "3x"
-    },
-    {
-      "size" : "60x60",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-60x60@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "60x60",
-      "idiom" : "iphone",
-      "filename" : "Icon-App-60x60@3x.png",
-      "scale" : "3x"
-    },
-    {
-      "size" : "20x20",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-20x20@1x.png",
-      "scale" : "1x"
-    },
-    {
-      "size" : "20x20",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-20x20@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-29x29@1x.png",
-      "scale" : "1x"
-    },
-    {
-      "size" : "29x29",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-29x29@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "40x40",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-40x40@1x.png",
-      "scale" : "1x"
-    },
-    {
-      "size" : "40x40",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-40x40@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "76x76",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-76x76@1x.png",
-      "scale" : "1x"
-    },
-    {
-      "size" : "76x76",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-76x76@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "83.5x83.5",
-      "idiom" : "ipad",
-      "filename" : "Icon-App-83.5x83.5@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "size" : "1024x1024",
-      "idiom" : "ios-marketing",
-      "filename" : "Icon-App-1024x1024@1x.png",
-      "scale" : "1x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png


+ 0 - 23
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json

@@ -1,23 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "filename" : "LaunchImage.png",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "filename" : "LaunchImage@2x.png",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "universal",
-      "filename" : "LaunchImage@3x.png",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png


BIN
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png


+ 0 - 5
app/plugin_wechat_camera_picker/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md

@@ -1,5 +0,0 @@
-# Launch Screen Assets
-
-You can customize the launch screen with your own desired assets by replacing the image files in this directory.
-
-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.

+ 0 - 37
app/plugin_wechat_camera_picker/example/ios/Runner/Base.lproj/LaunchScreen.storyboard

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="EHf-IW-A2E">
-            <objects>
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
-                    <layoutGuides>
-                        <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
-                        <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
-                    </layoutGuides>
-                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
-                            </imageView>
-                        </subviews>
-                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                        <constraints>
-                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
-                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
-                        </constraints>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="53" y="375"/>
-        </scene>
-    </scenes>
-    <resources>
-        <image name="LaunchImage" width="168" height="185"/>
-    </resources>
-</document>

+ 0 - 26
app/plugin_wechat_camera_picker/example/ios/Runner/Base.lproj/Main.storyboard

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
-    </dependencies>
-    <scenes>
-        <!--Flutter View Controller-->
-        <scene sceneID="tne-QT-ifu">
-            <objects>
-                <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
-                    <layoutGuides>
-                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
-                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
-                    </layoutGuides>
-                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
-                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
-            </objects>
-        </scene>
-    </scenes>
-</document>

+ 0 - 55
app/plugin_wechat_camera_picker/example/ios/Runner/Info.plist

@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleDisplayName</key>
-	<string>Wechat Camera Picker Example</string>
-	<key>CFBundleName</key>
-	<string>com.fluttercandies.wechatCameraPickerExample</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>$(FLUTTER_BUILD_NAME)</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>$(FLUTTER_BUILD_NUMBER)</string>
-	<key>LSRequiresIPhoneOS</key>
-	<true/>
-	<key>NSCameraUsageDescription</key>
-	<string>Take a photo for display</string>
-	<key>NSMicrophoneUsageDescription</key>
-	<string>Take a video for display</string>
-	<key>NSPhotoLibraryUsageDescription</key>
-	<string>Read and write your photos</string>
-	<key>UILaunchStoryboardName</key>
-	<string>LaunchScreen</string>
-	<key>UIMainStoryboardFile</key>
-	<string>Main</string>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UISupportedInterfaceOrientations~ipad</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>CADisableMinimumFrameDurationOnPhone</key>
-	<true/>
-	<key>UIApplicationSupportsIndirectInputEvents</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 1
app/plugin_wechat_camera_picker/example/ios/Runner/Runner-Bridging-Header.h

@@ -1 +0,0 @@
-#import "GeneratedPluginRegistrant.h"

+ 0 - 8
app/plugin_wechat_camera_picker/example/l10n.yaml

@@ -1,8 +0,0 @@
-arb-dir: lib/l10n
-# format: true
-output-class: AppLocalizations
-output-dir: lib/l10n/gen
-output-localization-file: app_localizations.dart
-template-arb-file: app_en.arb
-synthetic-package: false
-untranslated-messages-file: lib/l10n/gen/app_localizations_untranslated.json

+ 0 - 37
app/plugin_wechat_camera_picker/example/lib/extensions/color_extension.dart

@@ -1,37 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-// ignore_for_file: deprecated_member_use
-
-import 'package:flutter/material.dart'
-    show Color, Colors, HSLColor, MaterialColor;
-
-extension ColorExtension on Color {
-  MaterialColor get swatch {
-    return Colors.primaries.firstWhere(
-      (Color c) => c.value == value,
-      orElse: () => MaterialColor(value, getMaterialColorValues),
-    );
-  }
-
-  Color _swatchShade(int swatchValue) {
-    return HSLColor.fromColor(this)
-        .withLightness(1 - (swatchValue / 1000))
-        .toColor();
-  }
-
-  Map<int, Color> get getMaterialColorValues {
-    return <int, Color>{
-      50: _swatchShade(50),
-      100: _swatchShade(100),
-      200: _swatchShade(200),
-      300: _swatchShade(300),
-      400: _swatchShade(400),
-      500: _swatchShade(500),
-      600: _swatchShade(600),
-      700: _swatchShade(700),
-      800: _swatchShade(800),
-      900: _swatchShade(900),
-    };
-  }
-}

+ 0 - 11
app/plugin_wechat_camera_picker/example/lib/extensions/l10n_extensions.dart

@@ -1,11 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/widgets.dart';
-
-import '../l10n/gen/app_localizations.dart';
-
-extension BuildContextExtension on BuildContext {
-  AppLocalizations get l10n => AppLocalizations.of(this)!;
-}

+ 0 - 34
app/plugin_wechat_camera_picker/example/lib/l10n/app_en.arb

@@ -1,34 +0,0 @@
-{
-  "@@locale": "en",
-  "appTitle": "WeChat Camera Picker Demo",
-  "appVersion": "Version: {version}",
-  "appVersionUnknown": "unknown",
-  "selectedAssetsText": "Selected Assets",
-  "pickMethodNotice": "Pickers in this page are located at the {dist}, defined by `pickMethods`.",
-  "pickMethodPhotosName": "Taking photos",
-  "pickMethodPhotosDescription": "Use cameras only to take photos.",
-  "pickMethodPhotosAndVideosName": "Taking photos and videos",
-  "pickMethodPhotosAndVideosDescription": "Use cameras to take photos and videos.",
-  "pickMethodVideosName": "Taking videos",
-  "pickMethodVideosDescription": "Use cameras only to take videos.",
-  "pickMethodVideosByTapName": "Taking videos by tap",
-  "pickMethodVideosByTapDescription": "Use cameras only to take videos, but not with long-press, just a single tap.",
-  "pickMethodSilenceRecordingName": "Silence recording",
-  "pickMethodSilenceRecordingDescription": "Make recordings silent.",
-  "pickMethodNoDurationLimitName": "No duration limit",
-  "pickMethodNoDurationLimitDescription": "Record as long as you with (if your device stays alive)...",
-  "pickMethodCustomizableThemeName": "Customizable theme (ThemeData)",
-  "pickMethodCustomizableThemeDescription": "Picking assets with the light theme or with a different color.",
-  "pickMethodRotateInTurnsName": "Rotate picker in turns",
-  "pickMethodRotateInTurnsDescription": "Rotate the picker layout in quarter turns, without the camera preview.",
-  "pickMethodScalingPreviewName": "Scaling for camera preview",
-  "pickMethodScalingPreviewDescription": "Camera preview will be scaled to cover the whole screen of the device with the original aspect ratio.",
-  "pickMethodLowerResolutionName": "Lower resolutions",
-  "pickMethodLowerResolutionDescription": "Use a lower resolution preset might be helpful in some specific scenarios.",
-  "pickMethodPreferFrontCameraName": "Prefer front camera",
-  "pickMethodPreferFrontCameraDescription": "Use the front camera as the preferred lens direction if the device supports.",
-  "pickMethodPreferFlashlightOnName": "Prefer flashlight always on",
-  "pickMethodPreferFlashlightOnDescription": "Prefer to keep using the flashlight during captures.",
-  "pickMethodForegroundBuilderName": "Foreground builder",
-  "pickMethodForegroundBuilderDescription": "Build your widgets with the given CameraController on the top of the camera preview."
-}

+ 0 - 34
app/plugin_wechat_camera_picker/example/lib/l10n/app_zh.arb

@@ -1,34 +0,0 @@
-{
-  "@@locale": "zh",
-  "appTitle": "WeChat Camera Picker 示例",
-  "appVersion": "版本:{version}",
-  "appVersionUnknown": "未知",
-  "selectedAssetsText": "已选的资源",
-  "pickMethodNotice": "该页面的所有选择器的代码位于 {dist},由 `pickMethods` 定义。",
-  "pickMethodPhotosName": "拍照",
-  "pickMethodPhotosDescription": "使用相机拍照。",
-  "pickMethodPhotosAndVideosName": "拍照和录像",
-  "pickMethodPhotosAndVideosDescription": "使用相机进行拍照和录像。",
-  "pickMethodVideosName": "录像",
-  "pickMethodVideosDescription": "使用相机录像。",
-  "pickMethodVideosByTapName": "轻触录像",
-  "pickMethodVideosByTapDescription": "轻触录像按钮进行录像,而不是长按。",
-  "pickMethodSilenceRecordingName": "静音录像",
-  "pickMethodSilenceRecordingDescription": "录像时不录制声音。",
-  "pickMethodNoDurationLimitName": "无时长限制录像",
-  "pickMethodNoDurationLimitDescription": "想录多久,就录多久(只要手机健在)。",
-  "pickMethodCustomizableThemeName": "自定义主题 (ThemeData)",
-  "pickMethodCustomizableThemeDescription": "可以用亮色或其他颜色及自定义的主题进行选择。",
-  "pickMethodRotateInTurnsName": "旋转选择器的布局",
-  "pickMethodRotateInTurnsDescription": "顺时针旋转选择器的元素布局,不旋转相机视图。",
-  "pickMethodScalingPreviewName": "缩放相机预览",
-  "pickMethodScalingPreviewDescription": "相机预览视图会被放大到覆盖整个屏幕且保持原始的预览比例。",
-  "pickMethodLowerResolutionName": "低分辨率拍照",
-  "pickMethodLowerResolutionDescription": "某些情况或机型使用低分辨率拍照会有稳定性改善。",
-  "pickMethodPreferFrontCameraName": "首选前置摄像头",
-  "pickMethodPreferFrontCameraDescription": "在设备支持时首选使用前置摄像头。",
-  "pickMethodPreferFlashlightOnName": "首选闪光灯始终启用",
-  "pickMethodPreferFlashlightOnDescription": "在设备支持时首选闪光灯始终启用。",
-  "pickMethodForegroundBuilderName": "构建前景",
-  "pickMethodForegroundBuilderDescription": "通过 CameraController 构建在相机预览部分的前景 widget。"
-}

+ 0 - 315
app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations.dart

@@ -1,315 +0,0 @@
-import 'dart:async';
-
-import 'package:flutter/foundation.dart';
-import 'package:flutter/widgets.dart';
-import 'package:flutter_localizations/flutter_localizations.dart';
-import 'package:intl/intl.dart' as intl;
-
-import 'app_localizations_en.dart';
-import 'app_localizations_zh.dart';
-
-// ignore_for_file: type=lint
-
-/// Callers can lookup localized strings with an instance of AppLocalizations
-/// returned by `AppLocalizations.of(context)`.
-///
-/// Applications need to include `AppLocalizations.delegate()` in their app's
-/// `localizationDelegates` list, and the locales they support in the app's
-/// `supportedLocales` list. For example:
-///
-/// ```dart
-/// import 'gen/app_localizations.dart';
-///
-/// return MaterialApp(
-///   localizationsDelegates: AppLocalizations.localizationsDelegates,
-///   supportedLocales: AppLocalizations.supportedLocales,
-///   home: MyApplicationHome(),
-/// );
-/// ```
-///
-/// ## Update pubspec.yaml
-///
-/// Please make sure to update your pubspec.yaml to include the following
-/// packages:
-///
-/// ```yaml
-/// dependencies:
-///   # Internationalization support.
-///   flutter_localizations:
-///     sdk: flutter
-///   intl: any # Use the pinned version from flutter_localizations
-///
-///   # Rest of dependencies
-/// ```
-///
-/// ## iOS Applications
-///
-/// iOS applications define key application metadata, including supported
-/// locales, in an Info.plist file that is built into the application bundle.
-/// To configure the locales supported by your app, you’ll need to edit this
-/// file.
-///
-/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
-/// Then, in the Project Navigator, open the Info.plist file under the Runner
-/// project’s Runner folder.
-///
-/// Next, select the Information Property List item, select Add Item from the
-/// Editor menu, then select Localizations from the pop-up menu.
-///
-/// Select and expand the newly-created Localizations item then, for each
-/// locale your application supports, add a new item and select the locale
-/// you wish to add from the pop-up menu in the Value field. This list should
-/// be consistent with the languages listed in the AppLocalizations.supportedLocales
-/// property.
-abstract class AppLocalizations {
-  AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString());
-
-  final String localeName;
-
-  static AppLocalizations? of(BuildContext context) {
-    return Localizations.of<AppLocalizations>(context, AppLocalizations);
-  }
-
-  static const LocalizationsDelegate<AppLocalizations> delegate = _AppLocalizationsDelegate();
-
-  /// A list of this localizations delegate along with the default localizations
-  /// delegates.
-  ///
-  /// Returns a list of localizations delegates containing this delegate along with
-  /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
-  /// and GlobalWidgetsLocalizations.delegate.
-  ///
-  /// Additional delegates can be added by appending to this list in
-  /// MaterialApp. This list does not have to be used at all if a custom list
-  /// of delegates is preferred or required.
-  static const List<LocalizationsDelegate<dynamic>> localizationsDelegates = <LocalizationsDelegate<dynamic>>[
-    delegate,
-    GlobalMaterialLocalizations.delegate,
-    GlobalCupertinoLocalizations.delegate,
-    GlobalWidgetsLocalizations.delegate,
-  ];
-
-  /// A list of this localizations delegate's supported locales.
-  static const List<Locale> supportedLocales = <Locale>[
-    Locale('en'),
-    Locale('zh')
-  ];
-
-  /// No description provided for @appTitle.
-  ///
-  /// In en, this message translates to:
-  /// **'WeChat Camera Picker Demo'**
-  String get appTitle;
-
-  /// No description provided for @appVersion.
-  ///
-  /// In en, this message translates to:
-  /// **'Version: {version}'**
-  String appVersion(Object version);
-
-  /// No description provided for @appVersionUnknown.
-  ///
-  /// In en, this message translates to:
-  /// **'unknown'**
-  String get appVersionUnknown;
-
-  /// No description provided for @selectedAssetsText.
-  ///
-  /// In en, this message translates to:
-  /// **'Selected Assets'**
-  String get selectedAssetsText;
-
-  /// No description provided for @pickMethodNotice.
-  ///
-  /// In en, this message translates to:
-  /// **'Pickers in this page are located at the {dist}, defined by `pickMethods`.'**
-  String pickMethodNotice(Object dist);
-
-  /// No description provided for @pickMethodPhotosName.
-  ///
-  /// In en, this message translates to:
-  /// **'Taking photos'**
-  String get pickMethodPhotosName;
-
-  /// No description provided for @pickMethodPhotosDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use cameras only to take photos.'**
-  String get pickMethodPhotosDescription;
-
-  /// No description provided for @pickMethodPhotosAndVideosName.
-  ///
-  /// In en, this message translates to:
-  /// **'Taking photos and videos'**
-  String get pickMethodPhotosAndVideosName;
-
-  /// No description provided for @pickMethodPhotosAndVideosDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use cameras to take photos and videos.'**
-  String get pickMethodPhotosAndVideosDescription;
-
-  /// No description provided for @pickMethodVideosName.
-  ///
-  /// In en, this message translates to:
-  /// **'Taking videos'**
-  String get pickMethodVideosName;
-
-  /// No description provided for @pickMethodVideosDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use cameras only to take videos.'**
-  String get pickMethodVideosDescription;
-
-  /// No description provided for @pickMethodVideosByTapName.
-  ///
-  /// In en, this message translates to:
-  /// **'Taking videos by tap'**
-  String get pickMethodVideosByTapName;
-
-  /// No description provided for @pickMethodVideosByTapDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use cameras only to take videos, but not with long-press, just a single tap.'**
-  String get pickMethodVideosByTapDescription;
-
-  /// No description provided for @pickMethodSilenceRecordingName.
-  ///
-  /// In en, this message translates to:
-  /// **'Silence recording'**
-  String get pickMethodSilenceRecordingName;
-
-  /// No description provided for @pickMethodSilenceRecordingDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Make recordings silent.'**
-  String get pickMethodSilenceRecordingDescription;
-
-  /// No description provided for @pickMethodNoDurationLimitName.
-  ///
-  /// In en, this message translates to:
-  /// **'No duration limit'**
-  String get pickMethodNoDurationLimitName;
-
-  /// No description provided for @pickMethodNoDurationLimitDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Record as long as you with (if your device stays alive)...'**
-  String get pickMethodNoDurationLimitDescription;
-
-  /// No description provided for @pickMethodCustomizableThemeName.
-  ///
-  /// In en, this message translates to:
-  /// **'Customizable theme (ThemeData)'**
-  String get pickMethodCustomizableThemeName;
-
-  /// No description provided for @pickMethodCustomizableThemeDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Picking assets with the light theme or with a different color.'**
-  String get pickMethodCustomizableThemeDescription;
-
-  /// No description provided for @pickMethodRotateInTurnsName.
-  ///
-  /// In en, this message translates to:
-  /// **'Rotate picker in turns'**
-  String get pickMethodRotateInTurnsName;
-
-  /// No description provided for @pickMethodRotateInTurnsDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Rotate the picker layout in quarter turns, without the camera preview.'**
-  String get pickMethodRotateInTurnsDescription;
-
-  /// No description provided for @pickMethodScalingPreviewName.
-  ///
-  /// In en, this message translates to:
-  /// **'Scaling for camera preview'**
-  String get pickMethodScalingPreviewName;
-
-  /// No description provided for @pickMethodScalingPreviewDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Camera preview will be scaled to cover the whole screen of the device with the original aspect ratio.'**
-  String get pickMethodScalingPreviewDescription;
-
-  /// No description provided for @pickMethodLowerResolutionName.
-  ///
-  /// In en, this message translates to:
-  /// **'Lower resolutions'**
-  String get pickMethodLowerResolutionName;
-
-  /// No description provided for @pickMethodLowerResolutionDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use a lower resolution preset might be helpful in some specific scenarios.'**
-  String get pickMethodLowerResolutionDescription;
-
-  /// No description provided for @pickMethodPreferFrontCameraName.
-  ///
-  /// In en, this message translates to:
-  /// **'Prefer front camera'**
-  String get pickMethodPreferFrontCameraName;
-
-  /// No description provided for @pickMethodPreferFrontCameraDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Use the front camera as the preferred lens direction if the device supports.'**
-  String get pickMethodPreferFrontCameraDescription;
-
-  /// No description provided for @pickMethodPreferFlashlightOnName.
-  ///
-  /// In en, this message translates to:
-  /// **'Prefer flashlight always on'**
-  String get pickMethodPreferFlashlightOnName;
-
-  /// No description provided for @pickMethodPreferFlashlightOnDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Prefer to keep using the flashlight during captures.'**
-  String get pickMethodPreferFlashlightOnDescription;
-
-  /// No description provided for @pickMethodForegroundBuilderName.
-  ///
-  /// In en, this message translates to:
-  /// **'Foreground builder'**
-  String get pickMethodForegroundBuilderName;
-
-  /// No description provided for @pickMethodForegroundBuilderDescription.
-  ///
-  /// In en, this message translates to:
-  /// **'Build your widgets with the given CameraController on the top of the camera preview.'**
-  String get pickMethodForegroundBuilderDescription;
-}
-
-class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
-  const _AppLocalizationsDelegate();
-
-  @override
-  Future<AppLocalizations> load(Locale locale) {
-    return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
-  }
-
-  @override
-  bool isSupported(Locale locale) => <String>['en', 'zh'].contains(locale.languageCode);
-
-  @override
-  bool shouldReload(_AppLocalizationsDelegate old) => false;
-}
-
-AppLocalizations lookupAppLocalizations(Locale locale) {
-
-
-  // Lookup logic when only language code is specified.
-  switch (locale.languageCode) {
-    case 'en': return AppLocalizationsEn();
-    case 'zh': return AppLocalizationsZh();
-  }
-
-  throw FlutterError(
-    'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
-    'an issue with the localizations generation tool. Please file an issue '
-    'on GitHub with a reproducible sample app and the gen-l10n configuration '
-    'that was used.'
-  );
-}

+ 0 - 105
app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_en.dart

@@ -1,105 +0,0 @@
-import 'app_localizations.dart';
-
-// ignore_for_file: type=lint
-
-/// The translations for English (`en`).
-class AppLocalizationsEn extends AppLocalizations {
-  AppLocalizationsEn([String locale = 'en']) : super(locale);
-
-  @override
-  String get appTitle => 'WeChat Camera Picker Demo';
-
-  @override
-  String appVersion(Object version) {
-    return 'Version: $version';
-  }
-
-  @override
-  String get appVersionUnknown => 'unknown';
-
-  @override
-  String get selectedAssetsText => 'Selected Assets';
-
-  @override
-  String pickMethodNotice(Object dist) {
-    return 'Pickers in this page are located at the $dist, defined by `pickMethods`.';
-  }
-
-  @override
-  String get pickMethodPhotosName => 'Taking photos';
-
-  @override
-  String get pickMethodPhotosDescription => 'Use cameras only to take photos.';
-
-  @override
-  String get pickMethodPhotosAndVideosName => 'Taking photos and videos';
-
-  @override
-  String get pickMethodPhotosAndVideosDescription => 'Use cameras to take photos and videos.';
-
-  @override
-  String get pickMethodVideosName => 'Taking videos';
-
-  @override
-  String get pickMethodVideosDescription => 'Use cameras only to take videos.';
-
-  @override
-  String get pickMethodVideosByTapName => 'Taking videos by tap';
-
-  @override
-  String get pickMethodVideosByTapDescription => 'Use cameras only to take videos, but not with long-press, just a single tap.';
-
-  @override
-  String get pickMethodSilenceRecordingName => 'Silence recording';
-
-  @override
-  String get pickMethodSilenceRecordingDescription => 'Make recordings silent.';
-
-  @override
-  String get pickMethodNoDurationLimitName => 'No duration limit';
-
-  @override
-  String get pickMethodNoDurationLimitDescription => 'Record as long as you with (if your device stays alive)...';
-
-  @override
-  String get pickMethodCustomizableThemeName => 'Customizable theme (ThemeData)';
-
-  @override
-  String get pickMethodCustomizableThemeDescription => 'Picking assets with the light theme or with a different color.';
-
-  @override
-  String get pickMethodRotateInTurnsName => 'Rotate picker in turns';
-
-  @override
-  String get pickMethodRotateInTurnsDescription => 'Rotate the picker layout in quarter turns, without the camera preview.';
-
-  @override
-  String get pickMethodScalingPreviewName => 'Scaling for camera preview';
-
-  @override
-  String get pickMethodScalingPreviewDescription => 'Camera preview will be scaled to cover the whole screen of the device with the original aspect ratio.';
-
-  @override
-  String get pickMethodLowerResolutionName => 'Lower resolutions';
-
-  @override
-  String get pickMethodLowerResolutionDescription => 'Use a lower resolution preset might be helpful in some specific scenarios.';
-
-  @override
-  String get pickMethodPreferFrontCameraName => 'Prefer front camera';
-
-  @override
-  String get pickMethodPreferFrontCameraDescription => 'Use the front camera as the preferred lens direction if the device supports.';
-
-  @override
-  String get pickMethodPreferFlashlightOnName => 'Prefer flashlight always on';
-
-  @override
-  String get pickMethodPreferFlashlightOnDescription => 'Prefer to keep using the flashlight during captures.';
-
-  @override
-  String get pickMethodForegroundBuilderName => 'Foreground builder';
-
-  @override
-  String get pickMethodForegroundBuilderDescription => 'Build your widgets with the given CameraController on the top of the camera preview.';
-}

+ 0 - 1
app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_untranslated.json

@@ -1 +0,0 @@
-{}

+ 0 - 105
app/plugin_wechat_camera_picker/example/lib/l10n/gen/app_localizations_zh.dart

@@ -1,105 +0,0 @@
-import 'app_localizations.dart';
-
-// ignore_for_file: type=lint
-
-/// The translations for Chinese (`zh`).
-class AppLocalizationsZh extends AppLocalizations {
-  AppLocalizationsZh([String locale = 'zh']) : super(locale);
-
-  @override
-  String get appTitle => 'WeChat Camera Picker 示例';
-
-  @override
-  String appVersion(Object version) {
-    return '版本:$version';
-  }
-
-  @override
-  String get appVersionUnknown => '未知';
-
-  @override
-  String get selectedAssetsText => '已选的资源';
-
-  @override
-  String pickMethodNotice(Object dist) {
-    return '该页面的所有选择器的代码位于 $dist,由 `pickMethods` 定义。';
-  }
-
-  @override
-  String get pickMethodPhotosName => '拍照';
-
-  @override
-  String get pickMethodPhotosDescription => '使用相机拍照。';
-
-  @override
-  String get pickMethodPhotosAndVideosName => '拍照和录像';
-
-  @override
-  String get pickMethodPhotosAndVideosDescription => '使用相机进行拍照和录像。';
-
-  @override
-  String get pickMethodVideosName => '录像';
-
-  @override
-  String get pickMethodVideosDescription => '使用相机录像。';
-
-  @override
-  String get pickMethodVideosByTapName => '轻触录像';
-
-  @override
-  String get pickMethodVideosByTapDescription => '轻触录像按钮进行录像,而不是长按。';
-
-  @override
-  String get pickMethodSilenceRecordingName => '静音录像';
-
-  @override
-  String get pickMethodSilenceRecordingDescription => '录像时不录制声音。';
-
-  @override
-  String get pickMethodNoDurationLimitName => '无时长限制录像';
-
-  @override
-  String get pickMethodNoDurationLimitDescription => '想录多久,就录多久(只要手机健在)。';
-
-  @override
-  String get pickMethodCustomizableThemeName => '自定义主题 (ThemeData)';
-
-  @override
-  String get pickMethodCustomizableThemeDescription => '可以用亮色或其他颜色及自定义的主题进行选择。';
-
-  @override
-  String get pickMethodRotateInTurnsName => '旋转选择器的布局';
-
-  @override
-  String get pickMethodRotateInTurnsDescription => '顺时针旋转选择器的元素布局,不旋转相机视图。';
-
-  @override
-  String get pickMethodScalingPreviewName => '缩放相机预览';
-
-  @override
-  String get pickMethodScalingPreviewDescription => '相机预览视图会被放大到覆盖整个屏幕且保持原始的预览比例。';
-
-  @override
-  String get pickMethodLowerResolutionName => '低分辨率拍照';
-
-  @override
-  String get pickMethodLowerResolutionDescription => '某些情况或机型使用低分辨率拍照会有稳定性改善。';
-
-  @override
-  String get pickMethodPreferFrontCameraName => '首选前置摄像头';
-
-  @override
-  String get pickMethodPreferFrontCameraDescription => '在设备支持时首选使用前置摄像头。';
-
-  @override
-  String get pickMethodPreferFlashlightOnName => '首选闪光灯始终启用';
-
-  @override
-  String get pickMethodPreferFlashlightOnDescription => '在设备支持时首选闪光灯始终启用。';
-
-  @override
-  String get pickMethodForegroundBuilderName => '构建前景';
-
-  @override
-  String get pickMethodForegroundBuilderDescription => '通过 CameraController 构建在相机预览部分的前景 widget。';
-}

+ 0 - 67
app/plugin_wechat_camera_picker/example/lib/main.dart

@@ -1,67 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-
-import 'extensions/color_extension.dart';
-import 'extensions/l10n_extensions.dart';
-import 'l10n/gen/app_localizations.dart';
-import 'pages/splash_page.dart';
-
-const Color themeColor = Color(0xff00bc56);
-
-/// The mock size is used for integration tests.
-/// Changing this requires at least a hot-restart.
-const Size? mockSize = null;
-
-String? packageVersion;
-
-void main() {
-  runApp(const MyApp());
-  SystemChrome.setSystemUIOverlayStyle(
-    SystemUiOverlayStyle.dark.copyWith(statusBarColor: Colors.transparent),
-  );
-}
-
-class MyApp extends StatelessWidget {
-  const MyApp({super.key});
-
-  @override
-  Widget build(BuildContext context) {
-    return MaterialApp(
-      onGenerateTitle: (BuildContext context) => context.l10n.appTitle,
-      theme: ThemeData(
-        brightness: Brightness.light,
-        primarySwatch: themeColor.swatch,
-        textSelectionTheme: const TextSelectionThemeData(
-          cursorColor: themeColor,
-        ),
-      ),
-      darkTheme: ThemeData(
-        brightness: Brightness.dark,
-        primarySwatch: themeColor.swatch,
-        textSelectionTheme: const TextSelectionThemeData(
-          cursorColor: themeColor,
-        ),
-      ),
-      home: const SplashPage(),
-      localizationsDelegates: AppLocalizations.localizationsDelegates,
-      supportedLocales: AppLocalizations.supportedLocales,
-      builder: (context, child) {
-        if (mockSize == null) {
-          return child!;
-        }
-        final mq = MediaQuery.of(context).copyWith(size: mockSize);
-        return MediaQuery(
-          data: mq,
-          child: Align(
-            alignment: Alignment.topCenter,
-            child: SizedBox.fromSize(size: mockSize, child: child),
-          ),
-        );
-      },
-    );
-  }
-}

+ 0 - 188
app/plugin_wechat_camera_picker/example/lib/models/picker_method.dart

@@ -1,188 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-
-import '../extensions/l10n_extensions.dart';
-
-/// Provide common usages of the picker.
-/// 提供常见的选择器调用方式。
-List<PickMethod> pickMethods(BuildContext context) {
-  return <PickMethod>[
-    PickMethod(
-      icon: '📷',
-      name: context.l10n.pickMethodPhotosName,
-      description: context.l10n.pickMethodPhotosDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(context),
-    ),
-    PickMethod(
-      icon: '📹',
-      name: context.l10n.pickMethodPhotosAndVideosName,
-      description: context.l10n.pickMethodPhotosAndVideosDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(enableRecording: true),
-      ),
-    ),
-    PickMethod(
-      icon: '🎥',
-      name: context.l10n.pickMethodVideosName,
-      description: context.l10n.pickMethodVideosDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          enableRecording: true,
-          onlyEnableRecording: true,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '📽',
-      name: context.l10n.pickMethodVideosByTapName,
-      description: context.l10n.pickMethodVideosByTapDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          enableRecording: true,
-          onlyEnableRecording: true,
-          enableTapRecording: true,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '🈲',
-      name: context.l10n.pickMethodSilenceRecordingName,
-      description: context.l10n.pickMethodSilenceRecordingDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          enableRecording: true,
-          onlyEnableRecording: true,
-          enableTapRecording: true,
-          enableAudio: false,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '⏳',
-      name: context.l10n.pickMethodNoDurationLimitName,
-      description: context.l10n.pickMethodNoDurationLimitDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          enableRecording: true,
-          onlyEnableRecording: true,
-          enableTapRecording: true,
-          maximumRecordingDuration: null,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '🎨',
-      name: context.l10n.pickMethodCustomizableThemeName,
-      description: context.l10n.pickMethodCustomizableThemeDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: CameraPickerConfig(
-          theme: CameraPicker.themeData(Colors.blue),
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '↩️',
-      name: context.l10n.pickMethodRotateInTurnsName,
-      description: context.l10n.pickMethodRotateInTurnsDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(cameraQuarterTurns: 1),
-      ),
-    ),
-    PickMethod(
-      icon: '🔍',
-      name: context.l10n.pickMethodScalingPreviewName,
-      description: context.l10n.pickMethodScalingPreviewDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(enableScaledPreview: true),
-      ),
-    ),
-    PickMethod(
-      icon: '🌀',
-      name: context.l10n.pickMethodLowerResolutionName,
-      description: context.l10n.pickMethodLowerResolutionDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          resolutionPreset: ResolutionPreset.low,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '🤳',
-      name: context.l10n.pickMethodPreferFrontCameraName,
-      description: context.l10n.pickMethodPreferFrontCameraDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          preferredLensDirection: CameraLensDirection.front,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '📸',
-      name: context.l10n.pickMethodPreferFlashlightOnName,
-      description: context.l10n.pickMethodPreferFlashlightOnDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: const CameraPickerConfig(
-          preferredFlashMode: FlashMode.always,
-        ),
-      ),
-    ),
-    PickMethod(
-      icon: '🪄',
-      name: context.l10n.pickMethodForegroundBuilderName,
-      description: context.l10n.pickMethodForegroundBuilderDescription,
-      method: (BuildContext context) => CameraPicker.pickFromCamera(
-        context,
-        pickerConfig: CameraPickerConfig(
-          foregroundBuilder: (
-            BuildContext context,
-            CameraController? controller,
-          ) {
-            return Center(
-              child: Text(
-                controller == null
-                    ? 'Waiting for initialize...'
-                    : '${controller.description.lensDirection}',
-                style: const TextStyle(color: Colors.white),
-              ),
-            );
-          },
-        ),
-      ),
-    ),
-  ];
-}
-
-/// Define a regular pick method.
-final class PickMethod {
-  const PickMethod({
-    required this.icon,
-    required this.name,
-    required this.description,
-    required this.method,
-    this.onLongPress,
-  });
-
-  final String icon;
-  final String name;
-  final String description;
-
-  /// The core function that defines how to use the picker.
-  final Future<AssetEntity?> Function(BuildContext context) method;
-
-  final GestureLongPressCallback? onLongPress;
-}

+ 0 - 127
app/plugin_wechat_camera_picker/example/lib/pages/home_page.dart

@@ -1,127 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:flutter/semantics.dart';
-import 'package:flutter/services.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-
-import '../extensions/l10n_extensions.dart';
-import '../main.dart';
-import '../models/picker_method.dart';
-import '../widgets/method_list_view.dart';
-import '../widgets/selected_assets_list_view.dart';
-
-class HomePage extends StatefulWidget {
-  const HomePage({super.key});
-
-  @override
-  State<HomePage> createState() => _MyHomePageState();
-}
-
-class _MyHomePageState extends State<HomePage> {
-  final ValueNotifier<bool> isDisplayingDetail = ValueNotifier<bool>(true);
-  List<AssetEntity> assets = <AssetEntity>[];
-
-  Future<void> selectAssets(PickMethod model) async {
-    final result = await model.method(context);
-    if (result != null) {
-      assets = [...assets, result];
-      if (mounted) {
-        setState(() {});
-      }
-    }
-  }
-
-  Widget header(BuildContext context) {
-    return Container(
-      margin: const EdgeInsetsDirectional.only(top: 30),
-      padding: const EdgeInsets.symmetric(horizontal: 20.0),
-      height: 60,
-      child: Row(
-        mainAxisAlignment: MainAxisAlignment.center,
-        children: <Widget>[
-          AspectRatio(
-            aspectRatio: 1,
-            child: Hero(
-              tag: 'LOGO',
-              child: Image.asset('assets/flutter_candies_logo.png'),
-            ),
-          ),
-          const SizedBox(width: 10),
-          Flexible(
-            child: Column(
-              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-              crossAxisAlignment: CrossAxisAlignment.start,
-              children: <Widget>[
-                Semantics(
-                  sortKey: const OrdinalSortKey(0),
-                  child: FittedBox(
-                    child: Text(
-                      context.l10n.appTitle,
-                      style: Theme.of(context).textTheme.titleLarge,
-                      overflow: TextOverflow.fade,
-                      maxLines: 1,
-                    ),
-                  ),
-                ),
-                Semantics(
-                  sortKey: const OrdinalSortKey(0.1),
-                  child: Text(
-                    context.l10n.appVersion(
-                      packageVersion ?? context.l10n.appVersionUnknown,
-                    ),
-                    style: Theme.of(context).textTheme.bodySmall,
-                  ),
-                ),
-              ],
-            ),
-          ),
-          const SizedBox(width: 20),
-        ],
-      ),
-    );
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return AnnotatedRegion<SystemUiOverlayStyle>(
-      value: Theme.of(context).brightness == Brightness.dark
-          ? SystemUiOverlayStyle.light
-          : SystemUiOverlayStyle.dark,
-      child: Scaffold(
-        body: SafeArea(
-          child: Column(
-            children: <Widget>[
-              header(context),
-              Padding(
-                padding: const EdgeInsets.all(20.0),
-                child: Text(
-                  context.l10n.pickMethodNotice(
-                    'lib/models/picker_method.dart',
-                  ),
-                ),
-              ),
-              Expanded(
-                child: MethodListView(
-                  pickMethods: pickMethods(context),
-                  onSelectMethod: selectAssets,
-                ),
-              ),
-              if (assets.isNotEmpty)
-                SelectedAssetsListView(
-                  assets: assets,
-                  isDisplayingDetail: isDisplayingDetail,
-                  onRemoveAsset: (int index) {
-                    assets.removeAt(index);
-                    setState(() {});
-                  },
-                ),
-            ],
-          ),
-        ),
-      ),
-    );
-  }
-}

+ 0 - 56
app/plugin_wechat_camera_picker/example/lib/pages/splash_page.dart

@@ -1,56 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:package_info_plus/package_info_plus.dart';
-
-import '../main.dart';
-import 'home_page.dart';
-
-class SplashPage extends StatefulWidget {
-  const SplashPage({super.key});
-
-  @override
-  State<SplashPage> createState() => _SplashPageState();
-}
-
-class _SplashPageState extends State<SplashPage> {
-  @override
-  void initState() {
-    super.initState();
-    init();
-  }
-
-  Future<void> init() async {
-    try {
-      final PackageInfo info = await PackageInfo.fromPlatform();
-      packageVersion = info.version;
-    } catch (_) {}
-    await Future<void>.delayed(const Duration(seconds: 1));
-    if (mounted) {
-      Navigator.of(context).pushReplacement(
-        PageRouteBuilder<void>(
-          pageBuilder: (_, __, ___) => const HomePage(),
-          transitionsBuilder: (_, Animation<double> a, __, Widget child) {
-            return FadeTransition(opacity: a, child: child);
-          },
-          transitionDuration: const Duration(seconds: 1),
-        ),
-      );
-    }
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return Material(
-      color: Theme.of(context).canvasColor,
-      child: Center(
-        child: Hero(
-          tag: 'LOGO',
-          child: Image.asset('assets/flutter_candies_logo.png', width: 150.0),
-        ),
-      ),
-    );
-  }
-}

+ 0 - 93
app/plugin_wechat_camera_picker/example/lib/widgets/asset_widget_builder.dart

@@ -1,93 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-
-class AssetWidgetBuilder extends StatelessWidget {
-  const AssetWidgetBuilder({
-    super.key,
-    required this.entity,
-    required this.isDisplayingDetail,
-  });
-
-  final AssetEntity entity;
-  final bool isDisplayingDetail;
-
-  Widget _audioAssetWidget(BuildContext context) {
-    return ColoredBox(
-      color: Theme.of(context).dividerColor,
-      child: Stack(
-        children: <Widget>[
-          AnimatedPositionedDirectional(
-            duration: kThemeAnimationDuration,
-            top: 0.0,
-            start: 0.0,
-            end: 0.0,
-            bottom: isDisplayingDetail ? 20.0 : 0.0,
-            child: Center(
-              child: Icon(
-                Icons.audiotrack,
-                size: isDisplayingDetail ? 24.0 : 16.0,
-              ),
-            ),
-          ),
-          AnimatedPositionedDirectional(
-            duration: kThemeAnimationDuration,
-            start: 0.0,
-            end: 0.0,
-            bottom: isDisplayingDetail ? 0.0 : -20.0,
-            height: 20.0,
-            child: Text(
-              entity.title ?? '',
-              style: const TextStyle(height: 1.0, fontSize: 10.0),
-              maxLines: 1,
-              overflow: TextOverflow.ellipsis,
-              textAlign: TextAlign.center,
-            ),
-          ),
-        ],
-      ),
-    );
-  }
-
-  Widget _imageAssetWidget(BuildContext context) {
-    return Image(
-      image: AssetEntityImageProvider(entity, isOriginal: false),
-      fit: BoxFit.cover,
-    );
-  }
-
-  Widget _videoAssetWidget(BuildContext context) {
-    return Stack(
-      children: <Widget>[
-        Positioned.fill(child: _imageAssetWidget(context)),
-        ColoredBox(
-          // ignore: deprecated_member_use
-          color: Theme.of(context).dividerColor.withOpacity(0.3),
-          child: Center(
-            child: Icon(
-              Icons.video_library,
-              color: Colors.white,
-              size: isDisplayingDetail ? 24.0 : 16.0,
-            ),
-          ),
-        ),
-      ],
-    );
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    switch (entity.type) {
-      case AssetType.audio:
-        return _audioAssetWidget(context);
-      case AssetType.video:
-        return _videoAssetWidget(context);
-      case AssetType.image:
-      case AssetType.other:
-        return _imageAssetWidget(context);
-    }
-  }
-}

+ 0 - 97
app/plugin_wechat_camera_picker/example/lib/widgets/method_list_view.dart

@@ -1,97 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-
-import '../models/picker_method.dart';
-
-class MethodListView extends StatefulWidget {
-  const MethodListView({
-    super.key,
-    required this.pickMethods,
-    required this.onSelectMethod,
-  });
-
-  final List<PickMethod> pickMethods;
-  final void Function(PickMethod method) onSelectMethod;
-
-  @override
-  State<MethodListView> createState() => _MethodListViewState();
-}
-
-class _MethodListViewState extends State<MethodListView> {
-  final ScrollController _controller = ScrollController();
-
-  Widget methodItemBuilder(BuildContext context, int index) {
-    final PickMethod model = widget.pickMethods[index];
-    return InkWell(
-      onTap: () => widget.onSelectMethod(model),
-      onLongPress: model.onLongPress,
-      child: Container(
-        padding: const EdgeInsets.symmetric(
-          horizontal: 20.0,
-          vertical: 10.0,
-        ),
-        child: Row(
-          children: <Widget>[
-            Container(
-              margin: const EdgeInsets.all(2.0),
-              width: 48,
-              height: 48,
-              child: Center(
-                child: ExcludeSemantics(
-                  child: Text(
-                    model.icon,
-                    style: const TextStyle(fontSize: 28.0),
-                  ),
-                ),
-              ),
-            ),
-            const SizedBox(width: 12.0),
-            Expanded(
-              child: Column(
-                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                crossAxisAlignment: CrossAxisAlignment.start,
-                children: <Widget>[
-                  Text(
-                    model.name,
-                    style: const TextStyle(
-                      fontSize: 18.0,
-                      fontWeight: FontWeight.bold,
-                    ),
-                    maxLines: 1,
-                    overflow: TextOverflow.ellipsis,
-                  ),
-                  const SizedBox(height: 5),
-                  Text(
-                    model.description,
-                    style: Theme.of(context).textTheme.bodySmall,
-                  ),
-                ],
-              ),
-            ),
-            const Icon(Icons.chevron_right, color: Colors.grey),
-          ],
-        ),
-      ),
-    );
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return Scrollbar(
-      controller: _controller,
-      thumbVisibility: true,
-      radius: const Radius.circular(999),
-      child: ListView.builder(
-        controller: _controller,
-        padding: const EdgeInsets.symmetric(horizontal: 10).add(
-          const EdgeInsets.only(top: 10, bottom: 20),
-        ),
-        itemCount: widget.pickMethods.length,
-        itemBuilder: methodItemBuilder,
-      ),
-    );
-  }
-}

+ 0 - 92
app/plugin_wechat_camera_picker/example/lib/widgets/preview_asset_widget.dart

@@ -1,92 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-import 'package:video_player/video_player.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-
-class PreviewAssetWidget extends StatefulWidget {
-  const PreviewAssetWidget(this.asset, {super.key});
-
-  final AssetEntity asset;
-
-  @override
-  State<PreviewAssetWidget> createState() => _PreviewAssetWidgetState();
-}
-
-class _PreviewAssetWidgetState extends State<PreviewAssetWidget> {
-  bool get _isVideo => widget.asset.type == AssetType.video;
-  Object? _error;
-  VideoPlayerController? _playerController;
-
-  @override
-  void initState() {
-    super.initState();
-    if (_isVideo) {
-      _initializeController();
-    }
-  }
-
-  @override
-  void dispose() {
-    _playerController?.dispose();
-    super.dispose();
-  }
-
-  Future<void> _initializeController() async {
-    final String? url = await widget.asset.getMediaUrl();
-    if (url == null) {
-      _error = StateError('The media URL of the preview asset is null.');
-      return;
-    }
-    final VideoPlayerController controller;
-    final Uri uri = Uri.parse(url);
-    if (Platform.isAndroid) {
-      controller = VideoPlayerController.contentUri(uri);
-    } else {
-      controller = VideoPlayerController.networkUrl(uri);
-    }
-    _playerController = controller;
-    try {
-      await controller.initialize();
-      controller
-        ..setLooping(true)
-        ..play();
-    } catch (e) {
-      _error = e;
-    } finally {
-      if (mounted) {
-        setState(() {});
-      }
-    }
-  }
-
-  Widget _buildImage(BuildContext context) {
-    return AssetEntityImage(widget.asset);
-  }
-
-  Widget _buildVideo(BuildContext context) {
-    final VideoPlayerController? controller = _playerController;
-    if (controller == null) {
-      return const CircularProgressIndicator();
-    }
-    return AspectRatio(
-      aspectRatio: controller.value.aspectRatio,
-      child: VideoPlayer(controller),
-    );
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    if (_error != null) {
-      return Text('$_error', style: const TextStyle(color: Colors.white));
-    }
-    if (_isVideo) {
-      return _buildVideo(context);
-    }
-    return _buildImage(context);
-  }
-}

+ 0 - 148
app/plugin_wechat_camera_picker/example/lib/widgets/selected_assets_list_view.dart

@@ -1,148 +0,0 @@
-// Copyright 2019 The FlutterCandies author. All rights reserved.
-// Use of this source code is governed by an Apache license that can be found
-// in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-
-import '../extensions/l10n_extensions.dart';
-import 'asset_widget_builder.dart';
-import 'preview_asset_widget.dart';
-
-class SelectedAssetsListView extends StatelessWidget {
-  const SelectedAssetsListView({
-    super.key,
-    required this.assets,
-    required this.isDisplayingDetail,
-    required this.onRemoveAsset,
-  });
-
-  final List<AssetEntity> assets;
-  final ValueNotifier<bool> isDisplayingDetail;
-  final void Function(int index) onRemoveAsset;
-
-  Widget _selectedAssetWidget(BuildContext context, int index) {
-    final AssetEntity asset = assets.elementAt(index);
-    return ValueListenableBuilder<bool>(
-      valueListenable: isDisplayingDetail,
-      builder: (_, bool value, __) => GestureDetector(
-        onTap: () async {
-          if (value) {
-            showDialog(
-              context: context,
-              builder: (BuildContext context) => GestureDetector(
-                onTap: Navigator.of(context).pop,
-                child: Center(child: PreviewAssetWidget(asset)),
-              ),
-            );
-          }
-        },
-        child: RepaintBoundary(
-          child: ClipRRect(
-            borderRadius: BorderRadius.circular(8.0),
-            child: AssetWidgetBuilder(
-              entity: asset,
-              isDisplayingDetail: value,
-            ),
-          ),
-        ),
-      ),
-    );
-  }
-
-  Widget _selectedAssetDeleteButton(BuildContext context, int index) {
-    return GestureDetector(
-      onTap: () => onRemoveAsset(index),
-      child: DecoratedBox(
-        decoration: BoxDecoration(
-          borderRadius: BorderRadius.circular(4.0),
-          // ignore: deprecated_member_use
-          color: Theme.of(context).canvasColor.withOpacity(0.5),
-        ),
-        child: const Icon(Icons.close, size: 18.0),
-      ),
-    );
-  }
-
-  Widget selectedAssetsListView(BuildContext context) {
-    return Expanded(
-      child: ListView.builder(
-        shrinkWrap: true,
-        physics: const BouncingScrollPhysics(),
-        padding: const EdgeInsets.symmetric(horizontal: 8.0),
-        scrollDirection: Axis.horizontal,
-        itemCount: assets.length,
-        itemBuilder: (BuildContext context, int index) {
-          return Padding(
-            padding: const EdgeInsets.symmetric(
-              horizontal: 8.0,
-              vertical: 16.0,
-            ),
-            child: AspectRatio(
-              aspectRatio: 1.0,
-              child: Stack(
-                children: <Widget>[
-                  Positioned.fill(child: _selectedAssetWidget(context, index)),
-                  ValueListenableBuilder<bool>(
-                    valueListenable: isDisplayingDetail,
-                    builder: (_, bool value, __) => AnimatedPositioned(
-                      duration: kThemeAnimationDuration,
-                      top: value ? 6.0 : -30.0,
-                      right: value ? 6.0 : -30.0,
-                      child: _selectedAssetDeleteButton(context, index),
-                    ),
-                  ),
-                ],
-              ),
-            ),
-          );
-        },
-      ),
-    );
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    return ValueListenableBuilder<bool>(
-      valueListenable: isDisplayingDetail,
-      builder: (_, bool value, __) => AnimatedContainer(
-        duration: kThemeChangeDuration,
-        curve: Curves.easeInOut,
-        height: assets.isNotEmpty
-            ? value
-            ? 120.0
-            : 80.0
-            : 40.0,
-        child: Column(
-          children: <Widget>[
-            SizedBox(
-              height: 20.0,
-              child: GestureDetector(
-                onTap: () {
-                  if (assets.isNotEmpty) {
-                    isDisplayingDetail.value = !isDisplayingDetail.value;
-                  }
-                },
-                child: Row(
-                  mainAxisSize: MainAxisSize.min,
-                  children: <Widget>[
-                    Text(context.l10n.selectedAssetsText),
-                    if (assets.isNotEmpty)
-                      Padding(
-                        padding: const EdgeInsetsDirectional.only(start: 10.0),
-                        child: Icon(
-                          value ? Icons.arrow_downward : Icons.arrow_upward,
-                          size: 18.0,
-                        ),
-                      ),
-                  ],
-                ),
-              ),
-            ),
-            selectedAssetsListView(context),
-          ],
-        ),
-      ),
-    );
-  }
-}

+ 0 - 29
app/plugin_wechat_camera_picker/example/pubspec.yaml

@@ -1,29 +0,0 @@
-name: wechat_camera_picker_demo
-description: A new Flutter project.
-version: 4.3.7+43
-publish_to: none
-
-environment:
-  sdk: ^3.3.0
-  flutter: '>=3.19.0'
-
-dependencies:
-  flutter:
-    sdk: flutter
-  flutter_localizations:
-    sdk: flutter
-  intl: '>=0.17.0 <1.0.0'
-
-  wechat_camera_picker:
-    path: ../
-
-  package_info_plus: '>=7.0.0 <9.0.0'
-  video_player: ^2.7.0
-
-dev_dependencies:
-  flutter_lints: any
-
-flutter:
-  uses-material-design: true
-  assets:
-    - assets/

+ 0 - 0
app/plugin_wechat_camera_picker/guides/migration_guide.md


Some files were not shown because too many files changed in this diff