语言: 英语 | 中文
基于微信 UI 的 Flutter 项目的相机选择器,也是 wechat_assets_picker 的一个单独的可运行扩展。
UI当前基于的微信版本: 8.0.49
。 UI设计将随着微信更新随时更新。
请参阅迁移指南,了解如何在重大更改之间进行迁移。
该软件包仅保证它可以在Flutter 的稳定版本上运行。我们不会实时更新它以与 Flutter 的其他渠道保持一致。
2.8.0 | 3.3.0 | 3.16.0 | |
---|---|---|---|
4.2.0+ | ✅ | ||
4.0.0+ | ✅ | ||
3.0.0+ | ✅ |
该软件包是由这些精彩的软件包构建的。
姓名 | 特征 |
---|---|
照片管理器 | 资产的基本抽象和管理。 |
相机 | 捕获图像和视频。 |
视频播放器 | 相应地播放视频和音频。 |
它们的实现在包中应该是相对稳定的。如果您在使用选择器时发现任何与之相关的问题,请先将问题提交到我们的问题跟踪器。
State
State
覆盖来实现ThemeData
完全可定制的主题![]() | ![]() | ![]() | ![]() | ![]() |
---|
在开始任何操作之前,请注意以下注意事项:
AssetEntity
AssetPathEntity
当您对相关 API 和行为有疑问时,请查看 photo_manager 的 API 文档以获取更多详细信息。
示例中详细介绍了大多数用法。在出现任何问题之前,请仔细阅读该示例。
如果您在运行flutter pub get
时遇到resolve conflict
错误,请使用dependency_overrides
来修复它。
运行flutter pub add wechat_camera_picker
,或手动将wechat_camera_picker
添加到pubspec.yaml
依赖项中。
dependencies :
wechat_camera_picker : ^latest_version
最新的稳定版本是:
最新的开发版本是:
运行前请遵循以下详细的设置指南:
NSPhotoLibraryAddUsageDescription
时,需要使用onEntitySaving
或onXFileCaptured
来处理捕获的文件,在这种情况下AssetEntity
不可用,使用其 ID 获取该资源将导致崩溃。然后在代码中导入该包:
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
当您选择资产时,包将获取Locale?
从您的BuildContext
中,并返回当前语言的相应文本委托。确保您的小部件树中有一个可以从BuildContext
访问的有效Locale
。否则,将使用默认的中文代表。
嵌入文本代表语言有:
如果您想使用自定义/固定文本委托,请通过CameraPickerConfig.textDelegate
传递它。
final AssetEntity ? entity = await CameraPicker . pickFromCamera (context);
使用CameraPickerConfig
进行更多拾取行为。
final AssetEntity ? entity = await CameraPicker . pickFromCamera (
context,
pickerConfig : const CameraPickerConfig (),
);
CameraPickerConfig
中的字段:
姓名 | 类型 | 描述 | 默认值 |
---|---|---|---|
启用录音 | bool | 拾取器是否可以录制视频。 | false |
仅启用录音 | bool | 选择器是否只能录制视频。仅当enableRecording 为true 时可用。 | false |
启用Tap录音 | bool | 是否允许单击开始录音。仅当enableRecording 为true 时可用。 | false |
启用音频 | bool | 是否选择器是否应录制音频。仅适用于录音。 | true |
启用设置曝光 | bool | 用户是否可以通过点击来设置曝光点。 | true |
启用点曝光控制 | bool | 用户是否可以根据设定点调整曝光。 | true |
启用捏合缩放 | bool | 用户是否可以通过捏合缩放相机。 | true |
启用拉动缩放记录 | bool | 用户录制视频时是否可以通过上拉进行缩放。 | true |
启用缩放预览 | bool | 拍摄期间是否应缩放相机预览。 | false |
应该删除预览文件 | bool | 弹出预览文件时是否删除。 | false |
应该自动预览视频 | bool | 视频是否应在预览中立即播放。 | true |
最大录音持续时间 | Duration? | 视频录制过程的最大持续时间。 | const Duration(seconds: 15) |
最小录音时长 | Duration | 视频录制过程的最短持续时间。 | const Duration(seconds: 1) |
主题 | ThemeData? | 选择器的主题数据。 | CameraPicker.themeData(wechatThemeColor) |
文本委托 | CameraPickerTextDelegate? | 控制小部件中文本的文本委托。 | CameraPickerTextDelegate |
分辨率预设 | ResolutionPreset | 当前相机的分辨率。 | ResolutionPreset.ultraHigh |
相机四分之一转 | int | 相机视图应顺时针旋转四分之一圈的数量。 | 0 |
图像格式组 | ImageFormatGroup | 描述原始图像格式的输出。 | ImageFormatGroup.unknown |
首选镜头方向 | CameraLensDirection | 首次使用相机时首选哪个镜头方向。 | CameraLensDirection.back |
锁定捕获方向 | DeviceOrientation? | 拍摄期间相机是否应锁定到特定方向。 | 无效的 |
前台生成器 | ForegroundBuilder? | 前景小部件生成器将覆盖整个相机预览。 | 无效的 |
预览TransformBuilder | PreviewTransformBuilder? | 将改变相机预览的小部件构建器。 | 无效的 |
实体保存 | EntitySaveCallback? | 定义用于在查看器中保存实体的回调类型。 | 无效的 |
错误时 | CameraErrorHandler? | 拣选过程中发生任何错误时的错误处理程序。 | 无效的 |
onXFileCaptured | XFileCapturedCallback? | 相机捕获XFile时的回调类型定义。 | 无效的 |
未满足最小记录持续时间 | VoidCallback? | 录音未达到最短录音时长时的回调。 | 无效的 |
提货确认时 | void Function(AssetEntity)? | 拍照或视频确认时的回调。 | 无效的 |
权限请求选项 | PermissionRequestOption? | 使用photo_manager 包保存捕获的文件时的权限请求选项。 | 无效的 |
State
所有用户界面都可以通过自定义State
进行自定义,包括:
CameraPickerState
CameraPickerViewerState
重写State
后,将它们传递给 pick 方法,更具体地说:
CameraPicker.pickFromCamera(createPickerState: () => CustomCameraPickerState());
CameraPickerViewer.pushToViewer(..., createViewerState: () => CustomCameraPickerViewerState());
目前,预览在 iOS 上无法正确同步。您可以在本期中找到更多详细信息:flutter/flutter#89216。除此之外,请提交问题来描述您的问题。
感谢这些优秀的人(表情符号键):
亚历克斯·李 ? ? ? ? | 彩晶龙 ? | 莱尔 | MJL0602 ? | 别名王 ? | 左编码 ? | 梁世荣 |
洛魔专业版 ️️️️♿️? | 朱立昂纳多 | 阮福来 ? | 阿莫斯 ? | 郑裕俊 |
该项目遵循所有贡献者规范。欢迎任何形式的贡献!