Flutter 截长图并保存
日常开发中我们有时候会碰到需要截超过屏幕长度的图片,超过一屏的内容这时候我们会想到内容肯定是可滑动的,这时候我们可能会想到ListView或者SingleChildScrollView等可滑动的组件。
注意:我们在使用截图功能的时候,因为需要将屏幕外的内容放在截图范围内,所以这时候我们就不能用build
函数去构造实例;
并且RepaintBoundary
组件必须和需要截图的组件紧挨着;
直接上代码
final GlobalKey _boundaryKey = GlobalKey();
SingleChildScrollView(
child: RepaintBoundary(
key: _boundaryKey,
child: Column(
children: List.generate(
msgs.length,
(index) => _createItem(),
).toList(),
),
),
),
onScreenshot(){
RenderRepaintBoundary? boundary = _boundaryKey.currentContext!
.findRenderObject() as RenderRepaintBoundary?;
double dpr = window.devicePixelRatio; // 获取当前设备的像素比
//通过boundary生成图片
var image = await boundary!.toImage(pixelRatio: dpr);
// 将image转化成byte
ByteData? byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData!.buffer.asUint8List();
//通过image_gallery_saver插件截图
var reslut = await ImageGallerySaver.saveImage(pngBytes, name: '截图');
}
SingleChildScrollView
也可以换成ListView
,但是构造函数必须用children
;
至此整个截长图保存到本地的功能已完成。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbcfbi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01