共计 2091 个字符,预计需要花费 6 分钟才能阅读完成。
题记
—— 执剑咫尺,从你的点滴积攒开始,所及之处,必精益求精。
github? | 测试源码在这里 | 百度同步 | |
---|---|---|---|
CSDN | 网易云课堂教程 | 掘金 | EDU 学院教程 |
知乎 | Flutter 系列文章 | 头条同步 |
理论我的项目开发中,谷歌官网举荐的几个相机插件总是满足不了须要,更令人不难受的是在华为某些高版本系列的手机中应用零碎相机拍照或者是抉择照片会让利用闪退。
小编也剖析了起因,在这些手机拍照的照片过大,在手机相机拍完的那一瞬间,手机零碎还没有解决完照片,而后利用就去读取这个照片,导致系统异样解体。
至本插件编写的 0.0.1 版本时,各相机利用插件都未修复其兼容性,以小编的性情,那就是再造个轮子,于是乎 本插件就诞生了。
0.0.1 版本 只反对 Android(已公布 2020-09-09)
0.0.3 版本 同时反对 iOS (正在公布中)
0.0.8 版本 反对 Android 自定义 拍照页面 (正在公布中)
0.0.9 版本 反对 iOS 自定义 拍照页面 (正在公布中)
如下图是默认状况下自定义相机的页面成果:
1 增加依赖
小编以将这个自定义相机封装成一个插件组件,间接应用 flutter_custom_camera_pugin 插件就可应用,个别小编的风格就是提供两种集成形式如下:
通过 pub 仓库 增加依赖,代码如下:最新版本查看这里
dependencies:
flutter_custom_camera_pugin: ^0.0.1
或者是通过 github 点击查看 github 形式增加依赖,代码如下:
dependencies:
shake_animation_widget:
git:
url: https://github.com/zhaolongs/FlutterCustomCameraPugin.git
ref: master
而后加载依赖,代码如下:
flutter pub get
而后在应用的中央导包,代码如下:
import 'package:flutter_custom_camera_pugin/flutter_custom_camera_pugin.dart';
2 关上自定义相机 拍照
你能够应用 FlutterCustomCameraPugin 的 openCamera 办法来关上自定义相机拍照页面,其中 可选参数 cameraConfigOptions 用来配置自定义相机页面的的按钮是否显示,如下代码清单 2-1:
/// 代码清单 2-1
/// 关上相机
void openCamera() async {CameraConfigOptions options = new CameraConfigOptions();
/// 默认自定义相册是否显示 相册切换
options.isShowSelectCamera = true;
/// 默认自定义相册是否显示 前后镜头切换
options.isShowPhotoAlbum = true;
/// 默认自定义相册是否显示 闪光灯开关按钮
options.isShowFlashButtonCamera = true;
/// 调起自定义相机
/// 拍照的返回后果
CameraResultInfo resultInfo =
await FlutterCustomCameraPugin.openCamera(cameraConfigOptions: options);
if (resultInfo.code == 200) {imageFile = new File(resultInfo.data["lImageUrl"]);
}else if (resultInfo.code == 201) {
///201 是拍照勾销 如点击了敞开按钮
/// 或者是 Android 手机的后退按钮
}
setState(() {});
}
CameraConfigOptions 用来配置相机参数,如下所示:
/// 相册配置应用参数
class CameraConfigOptions {
///0.0.1 版本
/// 默认自定义相册是否显示 相册切换
bool isShowPhotoAlbum = true;
/// 默认自定义相册是否显示 前后镜头切换
bool isShowSelectCamera = true;
/// 默认自定义相册是否显示 闪光灯开关按钮
bool isShowFlashButtonCamera = true;
}
CameraResultInfo 是拍照或者相册抉择后果关闭,拍照胜利、拍照勾销、相册抉择胜利、相册抉择失败均会回调:
class CameraResultInfo {
/// 音讯标识
int code;
/// 回调的音讯
String message ='';
/// 回调的数据
dynamic data ;
/// 回调的办法名
String method ='';
}
2 关上 相册抉择照片
/// 关上相册
void openPhotoAlbum() async {
/// 相册的抉择返回后果
/// 抉择胜利与勾销都会回调
CameraResultInfo resultInfo =await FlutterCustomCameraPugin.openPhotoAlbum();
if (resultInfo.code == 200) {imageFile = new File(resultInfo.data["lImageUrl"]);
}
}