Open-source project
fluttercandies/flutter_wechat_assets_picker avatar
fluttercandies/flutter_wechat_assets_picker

wechat_assets_picker follows WeChat 8.0.51 and guarantees stable Flutter

An image picker (also with video and audio) for Flutter projects based on the WeChat's UI.

1,652 stars520 forksDartApache-2.0

At a glance

What is it?
The Flutter WeChat Assets Picker gives Flutter apps a WeChat-style media browser for images, video and audio, built on photo_manager, extended_image, provider and video_player. The compatibility table is the part to read first: each major version line of the package pins one or two Flutter versions and marks the rest unsupported, so an upgrade is a coordinated move on both sides.
Who is it for?
wechat_assets_picker fits a Flutter app that needs a multi-asset picker with WeChat's interaction model already designed, particularly if you want the album, preview and selection screens without building them. It does not fit a team on a Flutter beta or a team that needs audio outside the app sandbox, since the README states audio can only be fetched within the sandbox on iOS and macOS.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 71 days ago.
What is it written in?
Mainly Dart, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The compatibility table decides your upgrade path

Most packages say something vague about supported Flutter versions. This one publishes a matrix, and it is strict.

Each package line is tied to specific Flutter columns and leaves the rest unsupported. A project on Flutter 3.16 needs the 8.9.0+ line and nothing else. A project on 3.22 can use 9.5.0+ or 10.0.0+. A project on 3.27 needs 10.0.0+. And a project on 3.10 is confined to 8.5.0+, which is old enough that it will be hard to combine with anything else you depend on.

The policy behind the table is stated directly above it: the package only guarantees to work on the stable version of Flutter, and the maintainers will not update in real time to align with other Flutter channels. So if you follow beta or dev channels, you are outside the guarantee by construction.

There is also a specific remedy for dependency pain. If `flutter pub get` reports a resolve conflict, the README points at `dependency_overrides` rather than asking you to downgrade something by hand.

The release cadence is regular enough to plan around: v10.1.1 on 2026-03-05, v10.1.2 on 2026-05-03, v10.1.3 on 2026-07-19, with the last push on 2026-08-13.

What the picker actually covers, and two honest limits

It is not only images. The feature list covers image, video and audio support, single picking mode, a special item builder, custom sort path delegates, custom text delegates and custom filter options. Accessibility is listed as complete for TalkBack and VoiceOver, which is rare enough in a media picker to be worth checking against your own audit criteria.

Presentation is theme-driven. The package describes itself as fully customizable through delegate overrides and as themable from ThemeData, with RTL support as part of the internationalisation story.

Two limitations are documented in notes rather than buried, and both are the kind that change a product plan.

The first is HEIF. HEIC images can be obtained and converted, but display is based on Flutter's own image decoder, and the note links to flutter/flutter issue 20522 as the reason. The suggested workaround is to use `entity.file` or `AssetEntityImage` for those images when displaying them.

The second is audio on Apple platforms. Because of limitations on iOS and macOS, audio can only be fetched within the sandbox. If your app needs to read a user's audio library outside its own container, this picker cannot get you there, and no configuration flag will change that.

A third boundary is scope: taking a new photo or video is not part of this package. The README points to a separate wechat_camera_picker package, describes it as a standalone extension meant to be used in combination, and tells you to check the example for detailed usage.

It is a UI layer over four other packages

The package credits section is a dependency map, and it tells you where the risk lives.

`photo_manager` provides the basic abstractions and management for assets. `extended_image` handles previewing assets with the expected behaviours. `provider` manages the interaction state of the picker. `video_player` plays videos and audio.

The README makes a specific request about that arrangement: if you find an issue rooted in one of them, submit it to that package's tracker rather than here, because their implementations should be relatively stable. Practically, that means when the picker misbehaves, your first debugging step is deciding which of the four layers owns the failure, and a bug about a video that will not play is probably video_player.

A Flutter upgrade that suits this package may conflict with the photo_manager version your app already resolved, which is exactly the situation the `dependency_overrides` advice covers.

The repository layout matches that shape, with the package under lib/, a full example application with platform folders under example/, and additional documentation under guides/.

WeChat 8.0.51 is the design reference, and it moves

The README states which WeChat release the interface is modelled on: version 8.0.51. It also states that UI designs will be updated following WeChat updates at any time.

That combination is a feature and a warning. If your product spec says the picker should look like WeChat, this package is a way to get a current-looking result without designing and maintaining every screen yourself, and the maintenance is someone else's job for as long as the package is alive.

The warning is that the target moves under you. There is no announcement mechanism described for a UI change, and there is no configuration to pin the interface to 8.0.51. A package upgrade can therefore change appearance as well as behaviour, which is a consideration when you are reviewing a dependency bump.

The alternative approach is worth naming, because it is a genuine choice rather than a fallback. Building the screens yourself in Flutter, using photo_manager for the asset access and extended_image for previews, keeps full control over the design system and removes the UI upgrade risk. You take on the album grid, the selection bar, the preview transition and the permission flows, which is a real amount of work and the reason most teams reach for this package in the first place.

Practical questions the README already answers

The README carries an FAQ section whose headings are more useful than their length suggests, because each one names a failure people actually hit.

Changing the default album name from Recent to something else is a documented topic, which matters when your app shows its own wording rather than WeChat's.

A build failure reading `Execution failed for task ':photo_manager:compileDebugKotlin'` is called out by name, which is an Android Gradle and Kotlin toolchain interaction rather than anything in this package's own code.

Creating an AssetEntity from a File or from a Uint8List, referred to as rawData, is documented, which is how you handle assets that did not come from the device library.

A Glide warning about failing to find GeneratedAppGlideModule also has its own troubleshooting entry.

Beyond the FAQ, the README documents uploading an AssetEntity as form data, with examples for both http and dio, registering an assets change observe callback, displaying selected assets, localisations setup, and custom pickers. Those are the integration points to read before you commit, because they are what determine whether the picker fits an existing networking and state management structure.

Editorial conclusion

wechat_assets_picker fits a Flutter app that needs a multi-asset picker with WeChat's interaction model already designed, particularly if you want the album, preview and selection screens without building them. It does not fit a team on a Flutter beta or a team that needs audio outside the app sandbox, since the README states audio can only be fetched within the sandbox on iOS and macOS. Verify first by finding your Flutter version in the compatibility table and moving the package to the line that covers it, and read the migration guide before crossing a major version because the breaking changes are not cosmetic.

Frequently asked questions

Which Flutter versions does wechat_assets_picker support?

The package only guarantees the stable channel, and it publishes a compatibility table. Version 10.0.0+ covers Flutter 3.27, 9.5.0+ covers 3.22 and 3.27, 8.9.0+ covers 3.16, 8.7.0+ covers 3.13, and 8.5.0+ covers 3.10. Other combinations are marked unsupported.

Can I take a photo with the Flutter WeChat Assets Picker?

No. Capture is a separate package, wechat_camera_picker, which the README describes as a standalone extension meant to be used in combination with this one.

How does wechat_assets_picker handle HEIC images?

They can be obtained and converted, but display is based on Flutter's image decoder, and the README links to flutter/flutter issue 20522. It recommends using entity.file or AssetEntityImage for HEIF images when displaying them.

Can the picker read audio files outside the app sandbox?

No. Due to limitations on iOS and macOS, the README states audio can only be fetched within the sandbox.

What do I do when flutter pub get reports a resolve conflict?

The README says to use dependency_overrides to fix it, rather than changing versions by hand.

Which WeChat version does the picker UI follow?

The README states the interface is based on WeChat 8.0.51, and that designs will be updated following WeChat updates at any time.

Official sources

  1. fluttercandies/flutter_wechat_assets_picker on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/fluttercandies-flutter-wechat-assets-picker.svg)](https://hysenlabs.com/projects/fluttercandies-flutter-wechat-assets-picker)

Was this useful?