前言
接上一篇,断断续续学习flutter,记下自己练手小项目,督促自己学习啦。如下可以扫码体验了。
项目地址:github.com/chencld/flu…
简介
这次是仿做微信的对话框,只实现了一部分功能如下:
- 表情
- 图片
- 位置
表情
1、如下图,用到了GridView的布局。
2、列表展示的时候。用到了RichText和WidgetSpan,然后用正则匹配去替换显示表情。
图片
图片用到了multi_image_picker多选图片和photo_view展示图片插件。 列表和最后提到的截图的图片展示都用到了Uint8List和Image.memory。
位置
用到了amap_all_fluttify高德地图插件,我是在onMapMoveEnd里面获取周围位置列表的,需要注意的一点就是搜索和选择地图列表的时候,需要判断一下,不然地图会飘。 这个插件有点复杂,我也是参考了网上的几篇文章才了解的。
截图
截图是我自己加的一个功能,主要是想体验一下RepaintBoundary,还挺简单的,用RepaintBoundary包裹你想要截取的widget,最后通过key值,再通过转换就能拿到截图的ByteData
RenderRepaintBoundary boundary = repaintWidgetKey.currentContext
.findRenderObject();
double dpr = window.devicePixelRatio;
var image = await boundary.toImage(pixelRatio: dpr);
ByteData _byteData = await image.toByteData(format: ImageByteFormat.png);
return _byteData;
保存截图的时候需要申请权限。不然会保存失败,在AndroidManifest.xml里面:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
回复文案
自动回复文案数据是在网上找的,如果有侵犯,还请告知,多谢。
后记
这次小练习最大的感受就是,太依赖插件了。
最开始我是想封装高德官网的原生sdk来开发一个插件的,无赖我对客户端开发只了解点皮毛,不是很友好,最后还是放弃了,手动捂脸。高德地图插件作者分的比较细写了好几个,我查找的时候也是对比费了好一些功夫,而且现在还有收费版本了,我用的这插件说是不会再更新,我这只是练习,如果正式项目需求,最后还是要自己去解决的,所以插件的开发也是很必须的。
总的来说像选取图片啊、位置地图啊这种功能性的,官方不是以api的形式提供,而是直接封装成插件,但是功能又不是很完善,对我这样不太了解客户端开发的同学就不是很友好,感觉会是一个坑吧。