[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9323":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},9323,"flutter_wechat_assets_picker","fluttercandies\u002Fflutter_wechat_assets_picker","fluttercandies","An image picker (also with video and audio) for Flutter projects based on the WeChat's UI.","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_assets_picker",null,"Dart",1646,517,11,9,0,7,56.84,"Apache License 2.0",false,"main",true,[24,25,26,27,28,29,30,31,32],"android","flutter","ios","macos","mobile","multiple-assets","picker","video","wechat","2026-06-12 04:00:44","\u003C!-- Copyright 2019 The FlutterCandies author. All rights reserved.\nUse of this source code is governed by an Apache license\nthat can be found in the LICENSE file. -->\n\n# Flutter WeChat Assets Picker\n\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fwechat_assets_picker?logo=dart&label=stable&style=flat-square)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_assets_picker)\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fwechat_assets_picker?color=9d00ff&include_prereleases&label=dev&logo=dart&style=flat-square)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_assets_picker)\n[![CodeFactor](https:\u002F\u002Fimg.shields.io\u002Fcodefactor\u002Fgrade\u002Fgithub\u002Ffluttercandies\u002Fflutter_wechat_assets_picker?logo=codefactor&logoColor=%23ffffff&style=flat-square)](https:\u002F\u002Fwww.codefactor.io\u002Frepository\u002Fgithub\u002Ffluttercandies\u002Fflutter_wechat_assets_picker)\n\n[![Build status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Frunnable.yml?branch=main&label=CI&logo=github&style=flat-square)](https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Factions\u002Fworkflows\u002Frunnable.yml)\n[![GitHub license](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Ffluttercandies\u002Fflutter_wechat_assets_picker?style=flat-square)](https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fblob\u002Fmain\u002FLICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Ffluttercandies\u002Fflutter_wechat_assets_picker?logo=github&style=flat-square)](https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fstargazers)\n[![GitHub forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Ffluttercandies\u002Fflutter_wechat_assets_picker?logo=github&style=flat-square)](https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fnetwork)\n\n[![Awesome Flutter](https:\u002F\u002Fcdn.rawgit.com\u002Fsindresorhus\u002Fawesome\u002Fd7305f38d29fed78fa85652e3a63e154dd8e8829\u002Fmedia\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FSolido\u002Fawesome-flutter)\n\u003Ca href=\"https:\u002F\u002Fqm.qq.com\u002Fq\u002FZyJbSVjfSU\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fyaml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ffluttercandies%2F.github%2Frefs%2Fheads%2Fmain%2Fdata.yml&query=%24.qq_group_number&label=QQ%E7%BE%A4&logo=qq&style=flat&color=1DACE8\" \u002F>\u003C\u002Fa>\n\nLanguage: English | [中文](README-ZH.md)\n\nAn **image picker (also with videos and audios)**\nfor Flutter projects based on the WeChat's UI.\n\nCurrent WeChat version that UI based on: **8.0.51**\nUI designs will be updated following the WeChat update in anytime.\n\nTo take a photo or a video for assets,\nplease check the detailed usage in the example,\nand head over to [wechat_camera_picker][wechat_camera_picker pub].\nThe package is a standalone extension that can to be used with combination.\n\nSee the [Migration Guide][] to learn how to migrate between breaking changes.\n\n## Versions compatibility\n\nThe package only guarantees to be working on **the stable version of Flutter**.\nWe won't update it in real-time to align with other channels of Flutter.\n\n|         | 3.10 | 3.13 | 3.16 | 3.22 | 3.27 |\n|---------|:----:|:----:|:----:|:----:|:----:|\n| 10.0.0+ |  ❌   |  ❌   |  ❌   |  ❌   |  ✅   |\n| 9.5.0+  |  ❌   |  ❌   |  ❌   |  ✅   |  ✅   |\n| 8.9.0+  |  ❌   |  ❌   |  ✅   |  ❌   |  ❌   |\n| 8.7.0+  |  ❌   |  ✅   |  ❌   |  ❌   |  ❌   |\n| 8.5.0+  |  ✅   |  ❌   |  ❌   |  ❌   |  ❌   |\n\nIf you got a `resolve conflict` error when running `flutter pub get`,\nplease use `dependency_overrides` to fix it.\n\n## Package credits\n\nThe package is built from these wonderful packages.\n\n| Name                                 | Features                                             |\n|:-------------------------------------|:-----------------------------------------------------|\n| [photo_manager][photo_manager pub]   | The basic abstractions and management for assets.    |\n| [extended_image][extended_image pub] | Preview assets with expected behaviors.              |\n| [provider][provider pub]             | Helps to manage the interaction state of the picker. |\n| [video_player][video_player pub]     | Plays videos and audios correspondingly.             |\n \nTheir implementation should be relatively stable in the package.\nIf you've found any issues related to them when using the picker,\nsubmit issues to our issue tracker first.\n\n\u003Cdetails>\n  \u003Csummary>Table of content\u003C\u002Fsummary>\n\n\u003C!-- TOC -->\n* [Flutter WeChat Assets Picker](#flutter-wechat-assets-picker)\n  * [Versions compatibility](#versions-compatibility)\n  * [Package credits](#package-credits)\n  * [Features ✨](#features-)\n    * [Notes 📝](#notes-)\n  * [Projects using this plugin 🖼️](#projects-using-this-plugin-)\n  * [Screenshots 📸](#screenshots-)\n  * [READ THIS FIRST ‼️](#read-this-first-)\n  * [Preparing for use 🍭](#preparing-for-use-)\n    * [Flutter](#flutter)\n    * [Android](#android)\n      * [Permissions](#permissions)\n    * [iOS](#ios)\n    * [macOS](#macos)\n  * [Usage 📖](#usage-)\n    * [Localizations](#localizations)\n    * [Simple usage](#simple-usage)\n    * [Detailed usage](#detailed-usage)\n      * [Display selected assets](#display-selected-assets)\n      * [Register assets change observe callback](#register-assets-change-observe-callback)\n      * [Upload an `AssetEntity` with a form data](#upload-an-assetentity-with-a-form-data)\n        * [With `http`](#with-http)\n        * [With `dio`](#with-dio)\n    * [Custom pickers](#custom-pickers)\n  * [Frequently asked question ❔](#frequently-asked-question-)\n    * [Changing the default album name (`Recent` to others)](#changing-the-default-album-name-recent-to-others)\n    * [Execution failed for task ':photo_manager:compileDebugKotlin'](#execution-failed-for-task-photo_managercompiledebugkotlin)\n    * [Create `AssetEntity` from `File` or `Uint8List` (rawData)](#create-assetentity-from-file-or-uint8list-rawdata)\n    * [Glide warning 'Failed to find GeneratedAppGlideModule'](#glide-warning-failed-to-find-generatedappglidemodule)\n  * [Contributors ✨](#contributors-)\n  * [Credits](#credits)\n\u003C!-- TOC -->\n\u003C\u002Fdetails>\n\n## Features ✨\n\n- ♿ Complete a11y support with _TalkBack_ and _VoiceOver_\n- ♻️ Fully customizable with delegates override\n- 🎏 Fully customizable theme based on `ThemeData`\n- 💚 Completely WeChat style (even more)\n- ⚡️ Adjustable performance with different configurations\n- 📷 Image support\n  - 🔬 HEIF Image type support \u003Ca href=\"#notes-\">\u003Csup>(1)\u003C\u002Fsup>\u003C\u002Fa>\n- 🎥 Video support\n- 🎶 Audio support \u003Ca href=\"#notes-\">\u003Csup>(2)\u003C\u002Fsup>\u003C\u002Fa>\n- 1️⃣ Single picking mode\n- 💱 Internationalization (i18n) support\n  - ⏪ RTL language support\n- ➕ Special item builder support\n- 🗂 Custom sort path delegate support\n- 📝 Custom text delegate support\n- ⏳ Custom filter options support\n- 💻 macOS support\n\n### Notes 📝\n\n1. HEIF (HEIC) images are support to obtain and conversion,\n   but the display with them are based on Flutter's image decoder.\n   See [flutter\u002Fflutter#20522](https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fissues\u002F20522).\n   Use `entity.file` or `AssetEntityImage` for them when displays.\n2. Due to limitations on iOS and macOS, audio can only be fetched within the sandbox.\n\n## Projects using this plugin 🖼️\n\n| name                | pub                                                                                                              | github                                                                                                                                        |\n|:--------------------|:-----------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------|\n| insta_assets_picker | [![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Finsta_assets_picker)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Finsta_assets_picker) | [![star](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FLeGoffMael\u002Finsta_assets_picker?style=social)](https:\u002F\u002Fgithub.com\u002FLeGoffMael\u002Finsta_assets_picker) |\n\n## Screenshots 📸\n\n| ![1](screenshots\u002FREADME_1.webp)   | ![2](screenshots\u002FREADME_2.webp)   | ![3](screenshots\u002FREADME_3.webp)   |\n|-----------------------------------|-----------------------------------|-----------------------------------|\n| ![4](screenshots\u002FREADME_4.webp)   | ![5](screenshots\u002FREADME_5.webp)   | ![6](screenshots\u002FREADME_6.webp)   |\n| ![7](screenshots\u002FREADME_7.webp)   | ![8](screenshots\u002FREADME_8.webp)   | ![9](screenshots\u002FREADME_9.webp)   |\n| ![10](screenshots\u002FREADME_10.webp) | ![11](screenshots\u002FREADME_11.webp) | ![12](screenshots\u002FREADME_12.webp) |\n\n## READ THIS FIRST ‼️\n\nBe aware of below notices before you started anything:\n- Due to understanding differences and the limitation of a single document,\n  documents will not cover all the contents.\n  If you find nothing related to your expected features and cannot understand about concepts,\n  run the example project and check every options first.\n  It has covered 90% of regular requests with the package.\n- The package deeply integrates with the [photo_manager][photo_manager pub] plugin,\n  make sure you understand these two concepts as much as possible:\n  - Asset (photos\u002Fvideos\u002Faudio) - [`AssetEntity`](https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fphoto_manager\u002Flatest\u002Fphoto_manager\u002FAssetEntity-class.html)\n  - Assets collection (albums\u002Flibraries) - [`AssetPathEntity`](https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fphoto_manager\u002Flatest\u002Fphoto_manager\u002FAssetPathEntity-class.html)\n\nWhen you have questions about related APIs and behaviors,\ncheck [photo_manager's API docs][] for more details.\n\nMost usages are detailed covered by the [example](example).\nPlease walk through the [example](example) carefully\nbefore you have any questions.\n\n## Preparing for use 🍭\n\n### Flutter\n\nRun `flutter pub add wechat_assets_picker`,\nor add `wechat_assets_picker` to `pubspec.yaml` dependencies manually.\n```yaml\ndependencies:\n  wechat_assets_picker: ^latest_version\n```\n\nThe latest **stable** version is:\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fwechat_assets_picker?logo=dart&label=stable&style=flat-square)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_assets_picker)\n\nThe latest **dev** version is:\n[![pub package](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fwechat_assets_picker?color=9d00ff&include_prereleases&label=dev&logo=dart&style=flat-square)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_assets_picker)\n\nThen import the package in your code:\n```dart\nimport 'package:wechat_assets_picker\u002Fwechat_assets_picker.dart';\n```\n\n### Android\n\nWhen using the package, please upgrade\n`targetSdkVersion` and `compileSdkVersion` to `33`.\nOtherwise, no assets can be fetched on Android 13.\n\n#### Permissions\n\n| Name                              | Required | Declared | Max API Level | Others                              |\n|-----------------------------------|----------|----------|---------------|-------------------------------------|\n| `READ_EXTERNAL_STORAGE`           | YES      | YES      | 32            |                                     |\n| `WRITE_EXTERNAL_STORAGE`          | NO       | NO       | 29            |                                     |\n| `ACCESS_MEDIA_LOCATION`           | YES*     | NO       | N\u002FA           | Required when reading EXIF          |\n| `READ_MEDIA_IMAGES`               | YES*     | YES      | N\u002FA           | Required when reading images        | \n| `READ_MEDIA_VIDEO`                | YES*     | YES      | N\u002FA           | Required when reading videos        | \n| `READ_MEDIA_AUDIO`                | YES*     | YES      | N\u002FA           | Required when reading audios        | \n| `READ_MEDIA_VISUAL_USER_SELECTED` | YES*     | YES      | 34            | Required when reading user selected |\n\nIf you're targeting Android SDK 33+,\nand you don't need to load photos, videos or audios,\nconsider declare only relevant permission in your apps, more specifically:\n\n```xml\n\u003Cmanifest xmlns:android=\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres\u002Fandroid\"\n    xmlns:tools=\"http:\u002F\u002Fschemas.android.com\u002Ftools\"\n    package=\"com.your.app\">\n    \u003C!--Requesting access to images and videos.-->\n    \u003Cuses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" \u002F>\n    \u003Cuses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" \u002F>\n    \u003C!--Requesting access to limited images by user selection when prompting permission.-->\n    \u003Cuses-permission android:name=\"android.permission.READ_MEDIA_VISUAL_USER_SELECTED\" \u002F>\n    \u003C!--When your app has no need to access audio, remove it or comment it out.-->\n    \u003C!--\u003Cuses-permission android:name=\"android.permission.READ_MEDIA_AUDIO\" \u002F>-->\n\u003C\u002Fmanifest>\n```\n\n### iOS\n\n1. Platform version has to be at least *11.0*.\n   Modify `ios\u002FPodfile` and update accordingly.\n   ```Podfile\n   platform :ios, '11.0'\n   ```\n   Remove the `#` heading if the line starts with it.\n2. Add the following content to `Info.plist`.\n```\n\u003Ckey>NSPhotoLibraryUsageDescription\u003C\u002Fkey>\n\u003Cstring>Replace with your permission description.\u003C\u002Fstring>\n```\n\n### macOS\n\n1. Platform version has to be at least *10.15*.\n   Modify `macos\u002FPodfile` and update accordingly.\n   ```ruby\n   platform :osx, '10.15'\n   ```\n   Remove the `#` heading if the line starts with it.\n2. Set the minimum deployment target of the macOS to *10.15*.\n   Use XCode to open `macos\u002FRunner.xcworkspace` .\n3. Follow the [iOS](#iOS) instructions and modify `Info.plist` accordingly.\n\n## Usage 📖\n\n### Localizations\n\nWhen you're picking assets, the package will obtain the `Locale?`\nfrom your `BuildContext`, and return the corresponding text delegate\nof the current language.\nMake sure you have a valid `Locale` in your widget tree that can be accessed\nfrom the `BuildContext`. **Otherwise, the default Chinese delegate will be used.**\n\nEmbedded text delegates languages are:\n* 简体中文 (default)\n* English\n* העברית\n* Deutsche\n* Локализация\n* 日本語\n* مة العربية\n* Délégué\n* Tiếng Việt\n* Türkçe Yerelleştirme\n\nIf you want to use a custom\u002Ffixed text delegate, pass it through the\n`AssetPickerConfig.textDelegate`.\n\n### Simple usage\n\n```dart\nfinal List\u003CAssetEntity>? result = await AssetPicker.pickAssets(context);\n```\n\nUse `AssetPickerConfig` for more picking behaviors.\n\n```dart\nfinal List\u003CAssetEntity>? result = await AssetPicker.pickAssets(\n  context,\n  pickerConfig: const AssetPickerConfig(),\n);\n```\n\nFields in `AssetPickerConfig`:\n\n| Name                              | Type                                             | Description                                                                                    | Default                     |\n|-----------------------------------|--------------------------------------------------|------------------------------------------------------------------------------------------------|-----------------------------|\n| selectedAssets                    | `List\u003CAssetEntity>?`                             | Selected assets. Prevent duplicate selection.                                                  | `null`                      |\n| maxAssets                         | `int`                                            | Maximum asset that the picker can pick.                                                        | 9                           |\n| pageSize                          | `int?`                                           | Number of assets per page. **Must be a multiple of `gridCount`**.                              | 80                          |\n| gridThumbnailSize                 | `ThumbnailSize`                                  | Thumbnail size for the grid's item.                                                            | `ThumbnailSize.square(200)` |\n| pathThumbnailSize                 | `ThumbnailSize`                                  | Thumbnail size for the path selector.                                                          | `ThumbnailSize.square(80)`  |\n| previewThumbnailSize              | `ThumbnailSize?`                                 | Preview thumbnail size in the viewer.                                                          | `null`                      |\n| requestType                       | `RequestType`                                    | Request type for picker.                                                                       | `RequestType.common`        |\n| specialPickerType                 | `SpecialPickerType?`                             | Provides the option to integrate a custom picker type.                                         | `null`                      |\n| keepScrollOffset                  | `bool`                                           | Whether the picker should save the scroll offset between pushes and pops.                      | `null`                      |\n| sortPathDelegate                  | `SortPathDelegate\u003CAssetPathEntity>?`             | Path entities sort delegate for the picker, sort paths as you want.                            | `CommonSortPathDelegate`    |\n| sortPathsByModifiedDate           | `bool`                                           | Whether to allow sort delegates to sort paths with `FilterOptionGroup.containsPathModified`.   | `false`                     |\n| filterOptions                     | `PMFilter?`                                      | Allow users to customize assets filter options.                                                | `null`                      |\n| gridCount                         | `int`                                            | Grid count in picker.                                                                          | 4                           |\n| themeColor                        | `Color?`                                         | Main theme color for the picker.                                                               | `Color(0xff00bc56)`         |\n| pickerTheme                       | `ThemeData?`                                     | Theme data provider for the picker and the viewer.                                             | `null`                      |\n| textDelegate                      | `AssetPickerTextDelegate?`                       | Text delegate for the picker, for customize the texts.                                         | `AssetPickerTextDelegate()` |\n| specialItems                      | `List\u003CSpecialItem>`                              | List of special items.                                                                         | `const \u003CSpecialItem>[]`     |\n| loadingIndicatorBuilder           | `IndicatorBuilder?`                              | Indicates the loading status for the builder.                                                  | `null`                      |\n| selectPredicate                   | `AssetSelectPredicate`                           | Predicate whether an asset can be selected or unselected.                                      | `null`                      |\n| shouldRevertGrid                  | `bool?`                                          | Whether the assets grid should revert.                                                         | `null`                      |\n| limitedPermissionOverlayPredicate | `LimitedPermissionOverlayPredicate?`             | Predicate whether the limited permission overlay should be displayed.                          | `null`                      |\n| pathNameBuilder                   | `PathNameBuilder\u003CAssetPathEntity>?`              | Build customized path (album) name with the given path entity.                                 | `null`                      |\n| assetsChangeCallback              | `AssetsChangeCallback\u003CAssetPathEntity>?`         | The callback that will be called when the system notifies assets changes.                      | `null`                      |\n| assetsChangeRefreshPredicate      | `AssetsChangeRefreshPredicate\u003CAssetPathEntity>?` | Whether assets changing should call refresh with the given call and the current selected path. | `null`                      |\n| shouldAutoPlayPreview             | `bool`                                           | Whether the preview should auto play.                                                          | `false`                     |\n| dragToSelect                      | `bool`                                           | Whether assets selection can be done with drag gestures.                                       | `true`                      |\n| enableLivePhoto                   | `bool`                                           | Whether to enable Live-Photo functionality in the picker.                                      | `true`                      |\n\n- When `maxAssets` equals to `1` (a.k.a. single picking mode),\n  use `SpecialPickerType.noPreview` will immediately select asset\n  clicked (pressed) by the user and popped.\n- `limitedPermissionOverlayPredicate` lives without persistence,\n  if you want to ignore the limited preview after restart,\n  you'll need to integrate with your own saving methods.\n\n### Detailed usage\n\nWe've put multiple common usage\nwith the packages in the [example](example).\nYou can both found `List\u003CPickMethod> pickMethods` in\n[here](example\u002Flib\u002Fpages\u002Fmulti_assets_page.dart)\nand [here](example\u002Flib\u002Fpages\u002Fsingle_assets_page.dart),\nwhich provide methods in multiple picking and single picking mode.\nAssets will be stored temporary and displayed at the below of the page.\n\n#### Display selected assets\n\nThe `AssetEntityImage` and `AssetEntityImageProvider`\ncan display the thumb image of _images & videos_,\nand the original data of _image_.\nUse it like a common `Image` and `ImageProvider`.\n\n```dart\nAssetEntityImage(asset, isOriginal: false);\n```\n\nOr:\n\n```dart\nImage(image: AssetEntityImageProvider(asset, isOriginal: false));\n```\n\n#### Register assets change observe callback\n\n```dart\n\u002F\u002F Register callback.\nAssetPicker.registerObserve();\n\n\u002F\u002F Unregister callback.\nAssetPicker.unregisterObserve();\n```\n\n#### Upload an `AssetEntity` with a form data\n\nThere are multiple ways to upload an `AssetEntity` with I\u002FO related methods.\n**Be aware, I\u002FO related methods will consume performance\n(typically time and memory), they should not be called frequently.**\n\n##### With `http`\n\n`http` package: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fhttp\n\nThe `http` package uses\n[`MultipartFile`](https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fhttp\u002Flatest\u002Fhttp\u002FMultipartFile-class.html)\nto handle files in requests.\n\nPseudo code:\n```dart\nimport 'package:http\u002Fhttp.dart' as http;\n\nFuture\u003Cvoid> upload() async {\n  final entity = await obtainYourEntity();\n  final uri = Uri.https('example.com', 'create');\n  final request = http.MultipartRequest('POST', uri)\n    ..fields['test_field'] = 'test_value'\n    ..files.add(await multipartFileFromAssetEntity(entity));\n  final response = await request.send();\n  if (response.statusCode == 200) {\n    print('Uploaded!');\n  }\n}\n\nFuture\u003Chttp.MultipartFile> multipartFileFromAssetEntity(AssetEntity entity) async {\n  http.MultipartFile mf;\n  \u002F\u002F Using the file path.\n  final file = await entity.file;\n  if (file == null) {\n    throw StateError('Unable to obtain file of the entity ${entity.id}.');\n  }\n  mf = await http.MultipartFile.fromPath('test_file', file.path);\n  \u002F\u002F Using the bytes.\n  final bytes = await entity.originBytes;\n  if (bytes == null) {\n    throw StateError('Unable to obtain bytes of the entity ${entity.id}.');\n  }\n  mf = http.MultipartFile.fromBytes('test_file', bytes);\n  return mf;\n}\n```\n\n##### With `dio`\n\n`dio` package: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fdio\n\nThe `dio` package also uses\n[`MultipartFile`](https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fdio\u002Flatest\u002Fdio\u002FMultipartFile-class.html)\nto handle files in requests.\n\nPseudo code:\n```dart\nimport 'package:dio\u002Fdio.dart' as dio;\n\nFuture\u003Cvoid> upload() async {\n  final entity = await obtainYourEntity();\n  final uri = Uri.https('example.com', 'create');\n  final response = dio.Dio().requestUri(\n    uri,\n    data: dio.FormData.fromMap({\n      'test_field': 'test_value',\n      'test_file': await multipartFileFromAssetEntity(entity),\n    }),\n  );\n  print('Uploaded!');\n}\n\nFuture\u003Cdio.MultipartFile> multipartFileFromAssetEntity(AssetEntity entity) async {\n  dio.MultipartFile mf;\n  \u002F\u002F Using the file path.\n  final file = await entity.file;\n  if (file == null) {\n    throw StateError('Unable to obtain file of the entity ${entity.id}.');\n  }\n  mf = await dio.MultipartFile.fromFile(file.path);\n  \u002F\u002F Using the bytes.\n  final bytes = await entity.originBytes;\n  if (bytes == null) {\n    throw StateError('Unable to obtain bytes of the entity ${entity.id}.');\n  }\n  mf = dio.MultipartFile.fromBytes(bytes);\n  return mf;\n}\n```\n\n### Custom pickers\n\n`AssetPickerBuilderDelegate`, `AssetPickerViewerBuilderDelegate`,\n`AssetPickerProvider` and `AssetPickerViewerProvider`\nare all exposed and overridable.\nYou can extend them and use your own\ntype with generic type `\u003CA: Asset, P: Path>`,\nthen implement abstract methods.\n\nTo know about how to fully customize themes, widgets or layouts.\nSee how to customize delegates in the custom pickers page in the\n[example](example\u002Flib\u002Fcustoms\u002Fpickers).\n\nYou can submit PRs to create your own implementation\nif you found your implementation might be useful for others.\nSee [Contribute custom implementations][] for more details.\n\n## Frequently asked question ❔\n\n### Changing the default album name (`Recent` to others)\n\n`Recent` is the fix album name for the ALL assets on Android\nsince the all assets' album is not an actual album, it only represents all media data records.\n\nTo solve that on Android, use `pathNameBuilder`, for example:\n```dart\nAssetPickerConfig(\n  pathNameBuilder: (AssetPathEntity path) => switch (path) {\n    final p when p.isAll => '最近',\n    \u002F\u002F You can apply similar conditions to other common paths.\n    _ => path.name,\n  },\n)\n```\n\nOther albums or albums on other platforms (iOS\u002FmacOS) will follow\nthe configured system localization and supported localizations.\n`pathNameBuilder` is available for all albums.\n\n### Execution failed for task ':photo_manager:compileDebugKotlin'\n\nSee [photo_manager#561][] for more details.\n\n### Create `AssetEntity` from `File` or `Uint8List` (rawData)\n\nIn order to combine this package with camera shooting or something related,\nthere's a solution about how to create an `AssetEntity`\nwith `File` or `Uint8List` object.\n\n```dart\nfinal File file = your_file; \u002F\u002F Your `File` object\nfinal String path = file.path;\nfinal AssetEntity fileEntity = await PhotoManager.editor.saveImageWithPath(\n  path,\n  title: basename(path),\n); \u002F\u002F Saved in the device then create an AssetEntity\n\nfinal Uint8List data = your_data; \u002F\u002F Your `Uint8List` object\nfinal AssetEntity imageEntity = await PhotoManager.editor.saveImage(\n  file.path,\n  title: 'title_with_extension.jpg',\n); \u002F\u002F Saved in the device then create an AssetEntity\n```\n\n**Notice: If you don't want to keep the file in your device,\nuse `File` for operations as much as possible.**\nDeleting an `AssetEntity` might cause system popups show:\n\n```dart\nfinal List\u003CString> result = await PhotoManager.editor.deleteWithIds(\n  \u003CString>[entity.id],\n);\n```\n\nSee [photo_manager#from-raw-data][]\nand [photo_manager#delete-entities][]\nfor more details.\n\n### Glide warning 'Failed to find GeneratedAppGlideModule'\n\n```\nW\u002FGlide   (21133): Failed to find GeneratedAppGlideModule. \n                   You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler\n                   in you application ana a @GlideModule annotated AppGlideModule implementation\n                   or LibraryGlideModules will be silently ignored.\n```\n\n`Glide` needs annotation to keep singleton,\nprevent conflict between instances and versions,\nso while the photo manager uses `Glide` to implement image features,\nthe project which import this should define its own `AppGlideModule`.\nSee [Glide Generated API docs][] for implementation.\n\n## Contributors ✨\n\nMany thanks to these wonderful people ([emoji key](https:\u002F\u002Fallcontributors.org\u002Fdocs\u002Fen\u002Femoji-key)):\n\u003C!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n\u003C!-- prettier-ignore-start -->\n\u003C!-- markdownlint-disable -->\n\u003Ctable>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fblog.alexv525.com\">\u003Cimg src=\"https:\u002F\u002Favatars1.githubusercontent.com\u002Fu\u002F15884415?v=4?s=50\" width=\"50px;\" alt=\"Alex Li\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Alex Li\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=AlexV525\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#design-AlexV525\" title=\"Design\">🎨\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=AlexV525\" title=\"Documentation\">📖\u003C\u002Fa> \u003Ca href=\"#example-AlexV525\" title=\"Examples\">💡\u003C\u002Fa> \u003Ca href=\"#ideas-AlexV525\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa> \u003Ca href=\"#maintenance-AlexV525\" title=\"Maintenance\">🚧\u003C\u002Fa> \u003Ca href=\"#question-AlexV525\" title=\"Answering Questions\">💬\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fpulls?q=is%3Apr+reviewed-by%3AAlexV525\" title=\"Reviewed Pull Requests\">👀\u003C\u002Fa> \u003Ca href=\"#a11y-AlexV525\" title=\"Accessibility\">️️️️♿️\u003C\u002Fa> \u003Ca href=\"#translation-AlexV525\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fwww.kikt.top\">\u003Cimg src=\"https:\u002F\u002Favatars0.githubusercontent.com\u002Fu\u002F14145407?v=4?s=50\" width=\"50px;\" alt=\"Caijinglong\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Caijinglong\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#example-CaiJingLong\" title=\"Examples\">💡\u003C\u002Fa> \u003Ca href=\"#ideas-CaiJingLong\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSchnMar\">\u003Cimg src=\"https:\u002F\u002Favatars3.githubusercontent.com\u002Fu\u002F12902321?v=4?s=50\" width=\"50px;\" alt=\"Marcel Schneider\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Marcel Schneider\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3ASchnMar\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=SchnMar\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#ideas-SchnMar\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fganlanshu0211\">\u003Cimg src=\"https:\u002F\u002Favatars0.githubusercontent.com\u002Fu\u002F9670379?v=4?s=50\" width=\"50px;\" alt=\"ganlanshu0211\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>ganlanshu0211\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3Aganlanshu0211\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"#ideas-ganlanshu0211\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJasonHezz\">\u003Cimg src=\"https:\u002F\u002Favatars3.githubusercontent.com\u002Fu\u002F15358765?v=4?s=50\" width=\"50px;\" alt=\"JasonHezz\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>JasonHezz\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3AJasonHezz\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=JasonHezz\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyanivshaked\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13107481?v=4?s=50\" width=\"50px;\" alt=\"Yaniv Shaked\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Yaniv Shaked\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-yanivshaked\" title=\"Translation\">🌍\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=yanivshaked\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3Ayanivshaked\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"#maintenance-yanivshaked\" title=\"Maintenance\">🚧\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Favi-yadav\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7314430?v=4?s=50\" width=\"50px;\" alt=\"avi-yadav\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>avi-yadav\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=avi-yadav\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FLetalus\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F41230136?v=4?s=50\" width=\"50px;\" alt=\"Letalus\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Letalus\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3ALetalus\" title=\"Bug reports\">🐛\u003C\u002Fa> \u003Ca href=\"#translation-Letalus\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgreymag\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1502131?v=4?s=50\" width=\"50px;\" alt=\"greymag\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>greymag\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-greymag\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNaikSoftware\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4218994?v=4?s=50\" width=\"50px;\" alt=\"Nickolay Savchenko\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Nickolay Savchenko\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#design-NaikSoftware\" title=\"Design\">🎨\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FKosukeSaigusa\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13669049?v=4?s=50\" width=\"50px;\" alt=\"Kosuke Saigusa\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Kosuke Saigusa\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-KosukeSaigusa\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJon-Millent\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F17584565?v=4?s=50\" width=\"50px;\" alt=\"三闻书店\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>三闻书店\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=Jon-Millent\" title=\"Documentation\">📖\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdidiosn\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F15895051?v=4?s=50\" width=\"50px;\" alt=\"DidiosFaust\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>DidiosFaust\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-didiosn\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FConanXie\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10040846?v=4?s=50\" width=\"50px;\" alt=\"xiejie\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>xiejie\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3AConanXie\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmaxzod\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47630729?v=4?s=50\" width=\"50px;\" alt=\"Ahmed Masoud \"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Ahmed Masoud \u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-maxzod\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fluomo-pro\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F41097395?v=4?s=50\" width=\"50px;\" alt=\"luomo-pro\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>luomo-pro\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#a11y-luomo-pro\" title=\"Accessibility\">️️️️♿️\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3Aluomo-pro\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpaigupai\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44311361?v=4?s=50\" width=\"50px;\" alt=\"paigupai\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>paigupai\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-paigupai\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftaqiabdulaziz\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F30410316?v=4?s=50\" width=\"50px;\" alt=\"Muhammad Taqi Abdul Aziz\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Muhammad Taqi Abdul Aziz\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=taqiabdulaziz\" title=\"Documentation\">📖\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhellohejinyu\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8766034?v=4?s=50\" width=\"50px;\" alt=\"何锦余\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>何锦余\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3Ahellohejinyu\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fleonpesdk\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57394644?v=4?s=50\" width=\"50px;\" alt=\"Leon Dudlik\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Leon Dudlik\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3Aleonpesdk\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fwww.legoffmael.fr\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22376981?v=4?s=50\" width=\"50px;\" alt=\"Maël\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Maël\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=LeGoffMael\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#maintenance-LeGoffMael\" title=\"Maintenance\">🚧\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdddrop\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5361175?v=4?s=50\" width=\"50px;\" alt=\"dddrop\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>dddrop\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=dddrop\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Floinp\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F34020090?v=4?s=50\" width=\"50px;\" alt=\"Nguyen Phuc Loi\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Nguyen Phuc Loi\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-nploi\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fsqlturk.wordpress.com\u002F\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12383547?v=4?s=50\" width=\"50px;\" alt=\"Cevheri\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Cevheri\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-cevheri\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fvelog.io\u002F@hee_mm_\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48482259?v=4?s=50\" width=\"50px;\" alt=\"mirimhee\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>mirimhee\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-LIMMIHEE\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Famoshk.top\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F32262985?v=4?s=50\" width=\"50px;\" alt=\"Amos\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Amos\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fissues?q=author%3AAmosHuKe\" title=\"Bug reports\">🐛\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDimilkalathiya\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F102401667?v=4?s=50\" width=\"50px;\" alt=\"Dimil Kalathiya\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Dimil Kalathiya\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=Dimilkalathiya\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"http:\u002F\u002Fabout.me\u002Fgasol\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F108053?v=4?s=50\" width=\"50px;\" alt=\"Gasol Wu\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Gasol Wu\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#translation-Gasol\" title=\"Translation\">🌍\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWeiJun0507\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F66726409?v=4?s=50\" width=\"50px;\" alt=\"Wei Jun\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>Wei Jun\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"#business-WeiJun0507\" title=\"Business development\">💼\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=WeiJun0507\" title=\"Code\">💻\u003C\u002Fa> \u003Ca href=\"#ideas-WeiJun0507\" title=\"Ideas, Planning, & Feedback\">🤔\u003C\u002Fa>\u003C\u002Ftd>\n      \u003Ctd align=\"center\" valign=\"top\" width=\"14.28%\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyujune\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F56582497?v=4?s=50\" width=\"50px;\" alt=\"JuNe\"\u002F>\u003Cbr \u002F>\u003Csub>\u003Cb>JuNe\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fa>\u003Cbr \u002F>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fcommits?author=yujune\" title=\"Code\">💻\u003C\u002Fa>\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003C!-- markdownlint-restore -->\n\u003C!-- prettier-ignore-end -->\n\n\u003C!-- ALL-CONTRIBUTORS-LIST:END -->\nThis project follows the\n[all-contributors](https:\u002F\u002Fgithub.com\u002Fall-contributors\u002Fall-contributors) specification.\nContributions of any kind welcomed!!\n\n## Credits\n\n> Every aspect of IntelliJ IDEA has been designed to maximize developer productivity.\nTogether, intelligent coding assistance and ergonomic design make development not only productive but also enjoyable.\n\nThanks to [JetBrains](https:\u002F\u002Fwww.jetbrains.com\u002F?from=fluttercandies)\nfor allocating free open-source licenses for IDEs\nsuch as [IntelliJ IDEA](https:\u002F\u002Fwww.jetbrains.com\u002Fidea\u002F?from=fluttercandies).\n\n[\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fraw\u002Fmain\u002F.github\u002Fjetbrains-variant.png\" width=\"200\"\u002F>](https:\u002F\u002Fwww.jetbrains.com\u002F?from=fluttercandies)\n\n\n[photo_manager pub]: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fphoto_manager\n[extended_image pub]: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fextended_image\n[provider pub]: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fprovider\n[video_player pub]: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fvideo_player\n[wechat_camera_picker pub]: https:\u002F\u002Fpub.dev\u002Fpackages\u002Fwechat_camera_picker\n[Migration Guide]: https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fblob\u002Fmain\u002Fguides\u002Fmigration_guide.md\n[photo_manager's API docs]: https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fphoto_manager\u002Flatest\u002F\n[Glide Generated API docs]: https:\u002F\u002Fsjudd.github.io\u002Fglide\u002Fdoc\u002Fgeneratedapi.html\n[Contribute custom implementations]: https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_wechat_assets_picker\u002Fblob\u002Fmain\u002Fexample\u002Flib\u002Fcustoms\u002FCONTRIBUTING.md\n[photo_manager#561]: https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_photo_manager\u002Fissues\u002F561\n[photo_manager#from-raw-data]: https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_photo_manager#from-raw-data\n[photo_manager#delete-entities]: https:\u002F\u002Fgithub.com\u002Ffluttercandies\u002Fflutter_photo_manager#delete-entities\n","Flutter WeChat Assets Picker 是一个基于微信UI设计的图片选择器（同时支持视频和音频）插件，专为Flutter项目开发。该项目使用Dart语言编写，其核心功能包括多资产选择、自定义UI样式以及与微信版本同步更新的设计。它适用于需要在移动应用中提供类似微信媒体选择体验的场景，如社交软件、内容创作平台等。此外，该插件还支持与wechat_camera_picker结合使用，以实现拍照或录制视频的功能。遵循Apache License 2.0许可协议，确保了项目的开源性和可扩展性。",2,"2026-06-11 03:22:10","top_language"]