Flutter WeChat Camera Picker 在鸿蒙上的使用指南
fluttertpc_flutter_secure_storage 是一款专为鸿蒙系统适配的 Flutter 安全存储插件,基于 flutter_secure_storage 开发。该插件支持多种加密算法(RSA、AES),提供灵活配置选项,能与鸿蒙原生安全机制集成。通过 Git 方式安装后,开发者可使用统一 API 进行敏感数据存储,支持自定义 SharedPreferences 名称、密钥前缀
插件介绍
Flutter WeChat Camera Picker 是一个基于微信 UI 风格的相机选择器插件,专为 Flutter 项目设计,支持在鸿蒙平台上运行。该插件提供了丰富的相机功能,包括拍照、录像、曝光调节、缩放控制等,同时保持了与微信一致的用户体验。
主要特性:
- 💚 完全复刻微信相机 UI 风格
- 📷 支持高质量图片拍摄
- 🎥 支持视频录制,可设置录制时长限制
- ☀️ 支持曝光点设置和调节
- 🔍 支持捏合缩放和录像时上拉缩放
- 💱 内置多语言支持(简体中文、English、Tiếng Việt)
- ♿ 完整的无障碍支持
- ⚡️ 性能优化,可根据配置调节
安装和配置
通过 Git 引入依赖
由于这是针对鸿蒙平台的自定义修改版本,需要通过 Git 方式引入依赖。在项目的 pubspec.yaml 文件中添加以下配置:
dependencies:
wechat_camera_picker:
git:
url: https://gitcode.com/openharmony-sig/fluttertpc_flutter_wechat_camera_picker
path: .
camera:
git:
url: https://gitcode.com/openharmony-sig/flutter_packages.git
path: packages/camera/camera
鸿蒙权限配置
在鸿蒙平台上使用相机功能需要配置相应的权限。在项目的 module.json5 文件中添加以下权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.CAMERA",
"reason": "需要访问相机进行拍摄",
"usedScene": {
"abilities": ["ability.package.name"],
"when": "inuse"
}
},
{
"name": "ohos.permission.MICROPHONE",
"reason": "需要访问麦克风进行视频录制",
"usedScene": {
"abilities": ["ability.package.name"],
"when": "inuse"
}
},
{
"name": "ohos.permission.WRITE_MEDIA",
"reason": "需要写入媒体文件",
"usedScene": {
"abilities": ["ability.package.name"],
"when": "inuse"
}
},
{
"name": "ohos.permission.READ_MEDIA",
"reason": "需要读取媒体文件",
"usedScene": {
"abilities": ["ability.package.name"],
"when": "inuse"
}
}
]
}
}
导入包
在需要使用相机选择器的 Dart 文件中导入包:
import 'package:wechat_camera_picker/wechat_camera_picker.dart';
使用方法
简单使用
使用 CameraPicker.pickFromCamera() 方法可以快速调用相机选择器:
final AssetEntity? entity = await CameraPicker.pickFromCamera(context);
if (entity != null) {
// 处理拍摄的照片或视频
print('拍摄成功:${entity.id}');
}
带配置的使用
使用 CameraPickerConfig 可以自定义相机选择器的行为:
final AssetEntity? entity = await CameraPicker.pickFromCamera(
context,
pickerConfig: const CameraPickerConfig(
enableRecording: true, // 允许录制视频
maximumRecordingDuration: Duration(seconds: 30), // 最大录制时长
resolutionPreset: ResolutionPreset.high, // 拍摄分辨率
preferredLensDirection: CameraLensDirection.back, // 默认使用后置摄像头
enableTapRecording: true, // 允许点击录制视频
theme: ThemeData(primarySwatch: Colors.green), // 自定义主题
),
);
if (entity != null) {
// 处理拍摄的照片或视频
if (entity.type == AssetType.image) {
print('拍摄照片成功:${entity.id}');
} else if (entity.type == AssetType.video) {
print('录制视频成功:${entity.id},时长:${entity.duration}');
}
}
自定义配置项
CameraPickerConfig 支持以下主要配置项:
| 参数名 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| enableRecording | bool |
是否允许录制视频 | false |
| onlyEnableRecording | bool |
是否仅允许录制视频 | false |
| enableTapRecording | bool |
是否允许点击录制视频 | false |
| enableAudio | bool |
是否录制音频(仅视频模式) | true |
| maximumRecordingDuration | Duration? |
最大录制时长 | Duration(seconds: 15) |
| minimumRecordingDuration | Duration |
最小录制时长 | Duration(seconds: 1) |
| resolutionPreset | ResolutionPreset |
相机分辨率 | ResolutionPreset.max |
| preferredLensDirection | CameraLensDirection |
首选相机镜头方向 | CameraLensDirection.back |
| theme | ThemeData? |
自定义主题 | CameraPicker.themeData(wechatThemeColor) |
高级功能
自定义文字
如果需要自定义相机界面的文字,可以使用 CameraPickerTextDelegate:
class CustomTextDelegate extends CameraPickerTextDelegate {
String get cancelButtonText => '取消';
String get confirmButtonText => '确定';
String get recordingButtonText => '按住拍';
String get shootingButtonText => '拍照';
}
// 使用自定义文字代理
final AssetEntity? entity = await CameraPicker.pickFromCamera(
context,
pickerConfig: CameraPickerConfig(
textDelegate: CustomTextDelegate(),
),
);
自定义前景 widget
可以通过 foregroundBuilder 添加自定义的前景 widget:
final AssetEntity? entity = await CameraPicker.pickFromCamera(
context,
pickerConfig: CameraPickerConfig(
foregroundBuilder: (BuildContext context, CameraState state) {
return Positioned(
top: 20,
left: 20,
child: Container(
padding: const EdgeInsets.all(8),
color: Colors.black.withOpacity(0.5),
child: const Text(
'自定义前景',
style: TextStyle(color: Colors.white),
),
),
);
},
),
);
注意事项
- 确保在鸿蒙项目中正确配置了相机、麦克风和媒体文件的权限
- 该插件依赖于鸿蒙适配的 camera 包,需要通过 Git 方式引入
- 在使用前,建议检查设备是否支持相机功能
- 对于视频录制,建议合理设置最大录制时长,避免占用过多存储空间
- 在低性能设备上,建议降低分辨率设置以获得更流畅的体验
总结
Flutter WeChat Camera Picker 是一个功能强大、UI 友好的相机选择器插件,完美适配鸿蒙平台。通过简单的配置,开发者可以快速集成微信风格的相机功能到自己的 Flutter 应用中,支持拍照、录像等多种功能。
该插件的优势在于:
- 与微信一致的用户体验,降低用户学习成本
- 丰富的自定义配置,满足不同应用场景需求
- 良好的性能优化,适配各种设备
- 完整的文档和示例,便于快速集成
通过本指南,您可以轻松地在鸿蒙平台上集成和使用 Flutter WeChat Camera Picker 插件,为您的应用添加专业的相机功能。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐



所有评论(0)