在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?
一起来看看吧。
(资料图)
flutter中为使用camera提供了一个叫做camera的插件,我们首先需要安装这个插件。
安装插件的步骤很简单,如下所示:
flutter pub add camera
该命令会在pubspec.xml中添加下面的内容:
dependencies: flutter: sdk: flutter camera: ^0.10.0+1
除了camera之外,我们还需要对照相机拍摄的照片进行保存,这样我们还需要用到path_provider和path这两个plugin。
我们使用同样的方式对这两个插件进行安装。
安装好之后,我们就可以在flutter中的代码中愉快的使用camera了。
在使用camera之前,我们还需要获取相应的权限信息,比如在IOS中,我们需要在 ios/Runner/Info.plist中添加下面的权限信息:
NSCameraUsageDescription flutter需要用到你的照相机
在andorid中需要配合minSdkVersion>=21来使用。
camera插件为我们提供了一系列的功能来方便camera的使用。
camera的使用需要遵循下面的步骤,因为现在的手机可能会有多个摄像头,所以我们需要通过api获取到可以使用的摄像头列表。
接下来我们使用选中的摄像头,进行一些控制操作,然后需要使用相应的camera视图来展示相应的照相机图像.
最后调用摄像头相关的拍摄功能进行拍摄。
听起来好像挺复杂的,事实上只要遵照上面的顺序,一切都是非常简单的。
首先我们需要获取可用的摄像头列表,这个步骤是通过调用camera包中的availableCameras方法来实现的:
Future> availableCameras() async { return CameraPlatform.instance.availableCameras();}
availableCameras是一个异步方法,返回的是一个Future对象,其中的值是CameraDescription列表。
CameraDescription是对camera的描述文件:
const CameraDescription({ required this.name, required this.lensDirection, required this.sensorOrientation, });
name是摄像头的名称,lensDirection是摄像头面对的方向,sensorOrientation是传感器的方向,也就说你的手机是正常放置,还是选择90度放置。
因为availableCameras是一个异步方法,所以我们需要把它包裹在一个异步方法中进行调用:
Future main() async { // 保证所有的插件都加载完毕 WidgetsFlutterBinding.ensureInitialized(); //获取摄像头列表 final cameras = await availableCameras(); //拿到第一个摄像头 final firstCamera = cameras.first; ....
这里我们拿到了第一个摄像头,注意,这里的firstCamera是一个CameraDescription对象。
因为模拟器上没有摄像头,如果你是在模拟器上运行上面的程序的话,将会抛出下面的异常:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: No element#0 List.first (dart:core-patch/growable_array.dart:343:5)
为了对这个camra进行控制, 我们需要创建一个CameraController对象:
class CameraAppState extends State { late CameraController _controller; late Future _initializeControllerFuture; @override void initState() { super.initState(); _controller = CameraController( widget.camera, ResolutionPreset.medium, ); _initializeControllerFuture = _controller.initialize(); }
CameraController的构造函数需要一个CameraDescription对象和分辨率等信息,并且还需要进行初始化,这里我们调用了它的initialize方法。
这里的initialize方法也是一个异步方法。
为了在CameraController初始化之后再对Camera进行使用,我们需要在返回的widget中使用FutureBuilder来构建:
body: FutureBuilder( future: _initializeControllerFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return CameraPreview(_controller); } else { return const Center(child: CircularProgressIndicator()); } }, )
具体要展示什么内容呢?这里使用的是camera包中自带的CameraPreview组件。
CameraPreview需要传入一个CameraController对象,也就是之前我们创建的对象。
最后就是调用CameraController的方法进行拍照了。我们把拍照的逻辑放在floatingActionButton中,如下所示:
floatingActionButton: FloatingActionButton( onPressed: () async { try { await _initializeControllerFuture; final image = await _controller.takePicture(); if (!mounted) return; await Navigator.of(context).push( MaterialPageRoute( builder: (context) => DisplayPictureScreen( imagePath: image.path, ), ), ); } catch (e) { print(e); } }, child: const Icon(Icons.camera_alt), )
具体的逻辑就是调用controller.takePicture方法进行拍照。将拍好照的image放在一个新的widget中展示。
摄像头是app中常用的功能,flutter中的camera插件为我们提供了摄像头的控制功能,非常简单。
本文的例子:https://github.com/ddean2009/learn-flutter.git
标签:
上一篇 : 赫什再发文:美国中情局编造的故事太荒谬
下一篇 : 最后一页
在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中...
04-07 11:33:21
美国媒体将“北溪”管道爆炸的凶手指向“亲乌克兰团体”,赫什表示,这一故事是由中情局编造的。
04-07 11:00:44
比依股份(603215 SH)公告,公司拟投资设立全资子公司宁波比依科技有限公司(暂定),公司以自有资金出资5...
04-07 10:03:16
1、上海邮政编码:200000。2、上海,简称上海,是中国四大直辖市之一,是中国的经济、金融、贸易、航运...
04-07 09:11:40
眼下,山东省邹平市韩店镇耿家村党支部领办合作社的20亩“中华苔韭”韭菜长势喜人,农民忙着收割、分拣...
04-07 08:02:28
1、可以到《找小说网》的。2、在哪能看完富二代的艰难爱情这本书啊,有人能告诉我吗,有的请发我邮箱932051055
04-07 03:56:18
卡萨诺:穆帅不在乎比赛是否精彩,只是成功过而人们把他捧上了天,萨里,穆帅,安切洛蒂,皇家马德里,何塞·...
04-06 23:12:00
乐居财经王敏4月6日,正荣地产(06158)发布二零二三年三月未经审核经营数据。公告显示,截至二零二三年三...
04-06 19:55:08
1、《拖拉机液压软管总成》是2019年02月25日实施的一项行业标准。2、。本文到此分享完毕,希望对大家有...
04-06 18:49:47
4月6日,据中央纪委国家监委网站报道,据中央纪委国家监委驻工业和信息化部纪检监察组、江西省纪委监委...
04-06 18:10:47
近日,成师附校四年级语文、三年级数学、四年级数学及四年级英语四个教研组进行了“青蓝杯”课例展评。
04-06 17:01:47
2022-2023赛季NBA常规赛即将迎来尾声,目前各支球队只剩下2-3轮的比赛还未打完。在本赛季常规赛结束后,...
04-06 16:12:31
4月4日,“北京商业地产市场在一季度观察到了各个领域的需求回升,2023年开局良好,后程可期。”仲量联...
04-06 15:19:58
4月4日,在长沙市会议中心,召开长沙市红十字会第十次会员代表大会,会上对长沙市红十字系统优秀团体和...
04-06 14:18:12
加盟中甲新军济南兴洲,戴琳被证明“安全”,未受“赌球”传闻影响
04-06 13:23:16
观点网讯:4月6日消息,2023上海全球投资促进大会正式开幕。观点新媒体了解到,会上透露:现在上海着眼...
04-06 12:00:52
1、公交线路:地铁4号线→83路→877路。2、全程约69 1公里从北京南站步行约70米,到达北京南站2、乘坐地铁4号线
04-06 11:24:30
今年3月,汽车行业突然掀起降价狂潮,不过,从全国库存数据看,3月汽车消费仍未及预期。中国汽车流通协...
04-06 10:45:12
1、原型中国69式主战坦克(维基上说是88式。2、但实际上88式应该是6对负重轮的)而且从设计布局上来看炮...
04-06 10:01:47
中国人民银行3日发布的调查报告显示:今年一季度,我国企业家宏观经济热度指数为33 8%,比上季上升10 ...
04-06 09:13:10
金融界基金04月06日讯汇添富国证生物医药ETF基金03月31日上涨0 58%,现价0 522元,成交2681 11万元。...
04-06 07:59:48
昨日NBA常规赛,湖人在客场以135-133加时险胜爵士。此役,里夫斯出场41分钟13投8中,三分7中4、罚球8中8...
04-06 06:21:22
1、氢氧化金(英文名称Goldhydroxide:Goldhydroxide)又名三氢氧化金(Goldtrihydr
04-06 01:54:41
威尔斯25分胡金秋24+12于枭永23分广厦轻取四川迎9连胜,广厦,胡金秋,威尔斯,于枭永,四川省,中国体育联赛,...
04-05 22:18:46
1、油渍染黄先用清水沾湿污渍处,将盐撒在油污处涂抹,食盐能够吸收油脂成分,融解污垢。约二十分钟后,...
04-05 20:36:29
在社交媒体上,不少博主都晒出了自己“脱下孔乙己长衫后有多快乐”的分享。当人们怀抱着读书可以成为“...
04-05 18:47:29
1、新增本土:0;2、新增无症状:0;3、现有确诊:22;4、累计确诊:35;5、累计治愈:13;6、累计死亡:0;
04-05 17:01:51
湖南裕能(301358)03月28日在投资者关系平台上答复了投资者关心的问题。
04-05 15:54:52
适合年会发的小礼物,可爱发卡,玩具,发卡,发夹,发卡,发卡,发夹,发卡等等,发小礼物,都可以的,...
04-05 15:26:11
1、Win10安装字体主要有俩种方法:一 直接安装字体。2、二 批量安装字体。3、方法一:1 下载字体。4、2 下载好字
04-05 14:02:18
北京时间4月5日,迈阿密热火客场挑战底特律活塞,半场战罢,热火59-52暂时领先。前两节比赛,热火先发控...
04-05 12:16:28
1、人身自由权利人身自由权利的内容包括公民的人身自由不受侵犯;公民的人格尊严受法律保护;公民的住宅不
04-05 11:03:45
传言3月内公布售价并上市的第16代皇冠的上市时间推迟了,不过没有关系,不妨碍我们和大伙讲讲第十六代皇...
04-05 08:03:55
大家好我是枭天舞解说,关于这个标题其实是我直接复制过来的,当然改了一改。原本的标题是:如果有一天...
04-05 06:01:43
1、 2、将几种食材合成成一种类似于点粉状的物质。3、先将少量淀粉进行糊化,然后将糊化淀粉同适湿热水...
04-05 03:02:02
关于深层清洁面膜哪个牌子好的内容,包含什么牌子的深层清洁面膜好用?哪个牌子的深层清洁面膜好什么牌子...
04-04 22:47:12
太平洋证券股份有限公司夏芈卬近期对东方证券进行研究并发布了研究报告《东方证券2022年报点评:财管业...
04-04 21:08:51
pdf文件如何合并成一个?这个方法很经常在我身边出现,平时与文档打交道较多,所以掌握了不少文档整理技...
04-04 20:07:02
图为拉夫罗夫美国记者在俄罗斯被捕入狱后,俄罗斯外长与美国国务卿忽然进行通电,此次通电绝非捞人那么...
04-04 19:13:08
3月29日,2023年中国气象现代化建设科技博览会在深圳隆重召开。中兴通讯以“云网筑基石,数智兴气象”为...
04-04 18:05:52
乐居财经刘治颖4月4日,融创房地产集团有限公司发布关于“20融创02”复牌的公告。据悉,根据《关于召开...
04-04 17:02:22
鹏辉能源:关于召开2023年第一次临时股东大会的通知
04-04 16:27:43
菏泽市单县东城街道以提升居民幸福感、满意度为目标,通过强化党建引领、提升服务品质、增强治理效能三...
04-04 15:34:03
近日,浙江省计量院参与制定的一项国家标准GB T33523 606-2022《产品几何技术规范(GPS)表面结构区域法...
04-04 14:54:52
广州酒家(603043)公司董事会秘书陈扬、财务总监卢加、证券事务代表许莉及其他工作人员3月31日在广州市番...
04-04 13:37:55
人才是第一资源。为贯彻落实党的二十大精神,统筹推进教育、科技、人才一体化发展,进一步强化“双招双...
04-04 12:37:57
有粉丝表示一开始还差点没认出来,看采访知道为了演这个角色他增重了30斤,这倒是挺符合豹哥这个人设的...
04-04 11:32:40
红三兵是连续收出三根阳线的K线组合,它是一种很常见的K线组合,多数出现在底部区域,偶尔也会出现在上...
04-04 10:49:35
《地下城与勇士:决斗(DNFDuel)》将于4月20日在Switch平台正式发售,现已上架港服eS
04-04 10:24:26
4月2日,在关注“星星的孩子”公益捐助活动上,几名孤独症儿童展示画作。 当日是第16个世界孤独症日...
04-04 09:15:14
在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中...
2023-04-07
美国媒体将“北溪”管道爆炸的凶手指向“亲乌克兰团体”,赫什表示,这一故事是由中情局编造的。
2023-04-07
比依股份(603215 SH)公告,公司拟投资设立全资子公司宁波比依科技有限公司(暂定),公司以自有资金出资5...
2023-04-07
1、上海邮政编码:200000。2、上海,简称上海,是中国四大直辖市之一,是中国的经济、金融、贸易、航运...
2023-04-07
眼下,山东省邹平市韩店镇耿家村党支部领办合作社的20亩“中华苔韭”韭菜长势喜人,农民忙着收割、分拣...
2023-04-07
1月31日,记者从深圳市地方金融监督管理局获悉,作为深圳重要的支柱产业之一,2022年深圳金融业增加值达...
8月28日,记者了解到,为保障市场物价平稳运行,根据近期疫情防控形势,沈阳市市场监管局密切关注市场价...
近日,从海带中制造环保纱线的材料创新者AlgiKnit宣布获得1300万美元(8735 6万元)的A轮融资,以通过加...
概念特点1、 定义:纤维是天然或人工合成的细丝状物质,纺织纤维则是指用来纺织布的纤维。2、 纺织纤...
中新网西宁11月21日电 题:青海水润高原:从“大动脉”到“毛细血管”的精准管理 作者 谈林明...
Copyright © 2015-2032 华西纤维网版权所有 备案号:京ICP备2022016840号-35 联系邮箱: 920 891 263@qq.com