wechat_camera_picker

Creator: coderz1093

Last updated:

Add to Cart

Description:

wechat camera picker

Flutter WeChat Camera Picker #








Language: English | 中文
A camera picker for Flutter projects based on WeChat's UI,
which is also a separate runnable extension to the
wechat_assets_picker.
Current WeChat version that UI based on: 8.0.49
UI designs will be updated following the WeChat update in anytime.
See the Migration Guide to learn how to migrate between breaking changes.
Versions compatibility #
The package only guarantees to be working on the stable version of Flutter.
We won't update it in real-time to align with other channels of Flutter.




2.8.0
3.3.0
3.16.0




4.2.0+





4.0.0+





3.0.0+






Package credits #
The package is built from these wonderful packages.



Name
Features




photo_manager
The basic abstractions and management for assets.


camera
Captures images and videos.


video_player
Plays videos and audios correspondingly.



Their implementation should be relatively stable in the package.
If you've found any issues related to them when using the picker,
submit issues to our issue tracker first.

Table of content


Flutter WeChat Camera Picker

Versions compatibility
Package credits
Features ✨
Screenshots 📸
READ THIS FIRST ‼️
Preparing for use 🍭

Setup


Usage 📖

Localizations
Simple usage
With configurations
Using custom States


Frequently asked question 💭

Why the orientation behavior is strange on iOS?


Contributors ✨





Features ✨ #

♿ Complete a11y support with TalkBack and VoiceOver
♻️ Fully implementable with States override
🎏 Fully customizable theme based on ThemeData
💚 Completely WeChat style (even more)
⚡️ Adjustable performance with different configurations
📷 Picture taking support
🎥 Video recording support

⏱ Duration limitation support
🔍 Scale when recording support


☀️ Exposure adjust support
🔍️ Scale with pinch support
💱 i18n support

⏪ RTL language support


🖾 Foreground custom widget builder support
🕹️ Intercept saving with custom process

Screenshots 📸 #











READ THIS FIRST ‼️ #
Be aware of below notices before you started anything:

Due to understanding differences and the limitation of a single document,
documents will not cover all the contents.
If you find nothing related to your expected features and cannot understand about concepts,
run the example project and check every options first.
It has covered 90% of regular requests with the package.
The package deeply integrates with the photo_manager plugin,
make sure you understand these two concepts as much as possible:

Asset (photos/videos/audio) - AssetEntity
Assets collection (albums/libraries) - AssetPathEntity



When you have questions about related APIs and behaviors,
check photo_manager's API docs for more details.
Most usages are detailed covered by the example.
Please walk through the example carefully
before you have any questions.
Preparing for use 🍭 #
If you got a resolve conflict error when running flutter pub get,
please use dependency_overrides to fix it.
Setup #
Run flutter pub add wechat_camera_picker,
or add wechat_camera_picker to pubspec.yaml dependencies manually.
dependencies:
wechat_camera_picker: ^latest_version
copied to clipboard
The latest stable version is:

The latest dev version is:

Follow these detailed setup guide before runs:

wechat_assets_picker#preparing-for-use
camera#installation

Then import the package in your code:
import 'package:wechat_camera_picker/wechat_camera_picker.dart';
copied to clipboard
Usage 📖 #
Localizations #
When you're picking assets, the package will obtain the Locale?
from your BuildContext, and return the corresponding text delegate
of the current language.
Make sure you have a valid Locale in your widget tree that can be accessed
from the BuildContext. Otherwise, the default Chinese delegate will be used.
Embedded text delegates languages are:

简体中文 (default)
English
Tiếng Việt

If you want to use a custom/fixed text delegate, pass it through the
CameraPickerConfig.textDelegate.
Simple usage #
final AssetEntity? entity = await CameraPicker.pickFromCamera(context);
copied to clipboard
With configurations #
Use CameraPickerConfig for more picking behaviors.
final AssetEntity? entity = await CameraPicker.pickFromCamera(
context,
pickerConfig: const CameraPickerConfig(),
);
copied to clipboard
Fields in CameraPickerConfig:



Name
Type
Description
Default Value




enableRecording
bool
Whether the picker can record video.
false


onlyEnableRecording
bool
Whether the picker can only record video. Only available when enableRecording is true .
false


enableTapRecording
bool
Whether allow the record can start with single tap. Only available when enableRecording is true .
false


enableAudio
bool
Whether Whether the picker should record audio. Only available with recording.
true


enableSetExposure
bool
Whether users can set the exposure point by tapping.
true


enableExposureControlOnPoint
bool
Whether users can adjust exposure according to the set point.
true


enablePinchToZoom
bool
Whether users can zoom the camera by pinch.
true


enablePullToZoomInRecord
bool
Whether users can zoom by pulling up when recording video.
true


enableScaledPreview
bool
Whether the camera preview should be scaled during captures.
false


shouldDeletePreviewFile
bool
Whether the preview file will be delete when pop.
false


shouldAutoPreviewVideo
bool
Whether the video should be played instantly in the preview.
true


maximumRecordingDuration
Duration?
The maximum duration of the video recording process.
const Duration(seconds: 15)


minimumRecordingDuration
Duration
The minimum duration of the video recording process.
const Duration(seconds: 1)


theme
ThemeData?
Theme data for the picker.
CameraPicker.themeData(wechatThemeColor)


textDelegate
CameraPickerTextDelegate?
Text delegate that controls text in widgets.
CameraPickerTextDelegate


resolutionPreset
ResolutionPreset
Present resolution for the camera.
ResolutionPreset.ultraHigh


cameraQuarterTurns
int
The number of clockwise quarter turns the camera view should be rotated.
0


imageFormatGroup
ImageFormatGroup
Describes the output of the raw image format.
ImageFormatGroup.unknown


preferredLensDirection
CameraLensDirection
Which lens direction is preferred when first using the camera.
CameraLensDirection.back


lockCaptureOrientation
DeviceOrientation?
Whether the camera should be locked to the specific orientation during captures.
null


foregroundBuilder
ForegroundBuilder?
The foreground widget builder which will cover the whole camera preview.
null


previewTransformBuilder
PreviewTransformBuilder?
The widget builder which will transform the camera preview.
null


onEntitySaving
EntitySaveCallback?
The callback type define for saving entity in the viewer.
null


onError
CameraErrorHandler?
The error handler when any error occurred during the picking process.
null


onXFileCaptured
XFileCapturedCallback?
The callback type definition when the XFile is captured by the camera.
null


onMinimumRecordDurationNotMet
VoidCallback?
The callback when the recording is not met the minimum recording duration.
null



Using custom States #
All user interface can be customized through custom States, including:

CameraPickerState
CameraPickerViewerState

After override States, pass them through the picking method, more specifically:

CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());

Frequently asked question 💭 #
Why the orientation behavior is strange on iOS? #
Currently, the preview is not correctly synced on the iOS.
You can find more details in this issue:
https://github.com/flutter/flutter/issues/89216 .
Other than that, please submit issues to describe your question.
Contributors ✨ #
Thank goes to these wonderful people (emoji key):






Alex Li💻 🎨 📖 💡 🤔 🚧 💬 👀
Caijinglong💡 🤔
Lael📖
mjl0602💻 🤔
AliasWang💻 🤔
leftcoding🐛
Luong The Vinh💻


luomo-pro️️️️♿️ 🐛
LeonardoZhu💻
Nguyen Phuc Loi🌍
Amos🐛






This project follows the all-contributors specification. Contributions of any kind welcome!

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.