flutter 屏幕截图,超出屏幕部分截图
flutter 屏幕截图,超出屏幕截图
用于flutter 自定义截图,超出屏幕的部分也可以截取到
import 'dart:io';
import 'dart:typed_data';
import 'dart:ui';import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';class ScreenShotPage extends StatefulWidget {@override_ScreenShotPageState createState() => _ScreenShotPageState();
}class _ScreenShotPageState extends State<ScreenShotPage> {GlobalKey _rootWidgetKey = GlobalKey();@overrideWidget build(BuildContext context) {return Material(child: Scaffold(appBar: AppBar(title: Text('屏幕截图')),body: SafeArea(child: Stack(children: <Widget>[Positioned(left: 0,right: 0,top: 0,bottom: 60,child: SingleChildScrollView(scrollDirection: Axis.vertical,child: RepaintBoundary(key: _rootWidgetKey,child: Container(width: double.infinity,color: Color(0xffe8eaed),child: Column(children: <Widget>[Column(children: _listWidget())]),),)),),Positioned(left: 0, right: 0, bottom: 0, height: 60, child: _bottomWidget()),],),),),);}///数组List<Widget> _listWidget() {List<Widget> _list = List();for (int index = 0; index < 20; index++) {_list.add(Container(height: 30, child: Center(child: Text('屏幕截图$index'))));}return _list;}///bottomWidgetWidget _bottomWidget() {return Container(padding: EdgeInsets.fromLTRB(16, 0, 16, 0),height: 60,color: Colors.black.withOpacity(0.8),child: Center(child: RaisedButton(color: Colors.blue,shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(28)),onPressed: () {// showLoading(msg: '图片生成中...');_screenshotImg();},child: Text('完成', style: TextStyle(fontSize: 16, color: Colors.white)),),),);}///截图Future _screenshotImg() async {try {RenderRepaintBoundary boundary = _rootWidgetKey.currentContext.findRenderObject();var _dpr = window.devicePixelRatio;var image = await boundary.toImage(pixelRatio: _dpr);_getImgFilePath(image, 'root/filePath').then((filePath) {print('filePath:$filePath');});} catch (e) {print(e);}}/// 图片写入Filestatic Future<String> _getImgFilePath(var image, String filePath) async {ByteData byteData = await image.toByteData(format: ImageByteFormat.png);Uint8List pngBytes = byteData.buffer.asUint8List();File file = File('$filePath/237128773298739.png');if (!file.existsSync()) {file.createSync();}file.writeAsBytesSync(pngBytes);return file.path;}
}
flutter 屏幕截图,超出屏幕部分截图相关推荐
- flutter屏幕截图实现,超出屏幕部分的截图实现
flutter 屏幕截图需要用到RepaintBoundary来实现,用户RepaintBoundary包裹Widget即可实现对Widget的截图.如果是截长图可以参考一下方式: import 'd ...
- Windows屏幕工具(屏幕截图、贴图/屏幕取色/截图文字、表格识别/截图翻译、GIF录屏、GIF压缩)
背景 你是不是每次要截图而需要打开微信或者QQ截图而感到麻烦,你是不是经常被类似某度文库不能复制文字而感到不爽,你是不是在需要获取屏幕上某个颜色而到处找工具,你是不是想将屏幕操作生成动图图分享给其他人 ...
- python延时函数_Python实现屏幕自动截图
教程目录 需要实现的功能:自动屏幕截图 具体需求: 1. 支持设置截图频率和截图文件存储路径 2. 在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图 所需技术(搜索关键词): ...
- Movavi Screen Recorder 22 Mac(屏幕录像截图软件)
Movavi Screen Recorder 22 for Mac是一款具有屏幕录制以及截图功能的屏幕录像截图软件,Movavi Screen Recorder Mac版使用非常简单,点击录制图标之后 ...
- android 屏幕长截图,对标iOS?Android 11或无缘屏幕长截图
原标题:对标iOS?Android 11或无缘屏幕长截图 一直以来,不少用户都很喜欢用长截图功能进行页面截图,可以说在日常应用中这是一项比较实用的功能. 目前比较主流的小米MIUI.华为EMUI.三星 ...
- 实用!你不知道的小技巧,电脑快速实现屏幕长截图
在日常工作中,我们经常需要用到屏幕长截图这个功能,而要实现这个功能往往需要下载好几个软件,而且经常截图的效果并不如意. 其实国民软件QQ目前已经有了长截图功能. 首先下载QQ最新版,然后在需要截图的页 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本对齐,段落中超出屏幕部分文字自动换行...
<!DOCTYPE html> <html><head><title>菜鸟教程(runoob.com)</title> <meta n ...
- 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容
本来呢,我是有专门整理小程序恶心bug的文章的,每次只要添加汇总就好, 但是呢,鉴于这个问题的恶心程度,所以我把他单独拿出来说了. ---------------------------------- ...
- 获取和保存当前屏幕的截图 实现的C++代码如下
实现的C++代码如下: /** * 获取和保存当前屏幕的截图 */ private void getandsavecurrentimage() { //1 构建bitmap windowmanager ...
- el-cascader超出屏幕问题
el-cascader超出屏幕问题,在全局样式里添加即可 .el-cascader-panel {height: 300px;}
最新文章
- js MD5加密处理
- Docker的使用(四:Docker Registry本地私有仓库搭建知识点总结)
- 《并行计算的编程模型》一2.4.1 GASNet段
- 分解连续自然数的和_小学奥数各年级经典题解题技巧大全——分解因数法(2)...
- 图:图的邻接表创建、深度优先遍历和广度优先遍历代码实现
- 好程序员分享居中一个float元素
- List<?> list= new ArrayList<?>接口引用指向实现类的对象.
- 2021某宝上的千月五级分润源码影视小说源码
- mysql报错型手工注入_mysql手工注入教程
- 冲刺One之站立会议6 /2015-5-19
- OSPF高级特性(华为设备)
- poj 1062 昂贵的聘礼 最短路
- matlab中如何创建使用构架数组?
- Java代码实现24点计算
- Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。
- python3和5_Python3算法之五:最大子序和
- maven 添加外部jar包到本地仓库
- 【学术】如何长时间高效学习
- SQL学习笔记——task4:集合运算与内连结
- unity打靶游戏的制作
热门文章
- 哈工大C语言程序设计精髓MOOC 第十二周编程题
- ios 根据日期知道周几_iOS-通过日期计算是周几
- 半自动化与全自动化的区别
- Git:rebase 是什么
- 软件测试邻居集成,软件测试之集成测试(ppt-3).ppt
- 计算机主机自动关机如何设置,电脑怎么设置自动关机?电脑自动关机方法教程 电脑维修技术网...
- python基础教程_python基础教程百度网盘
- 【clickhouse踩坑记录】clusters表中分片副本的浅析
- html 页面换皮肤,HTML中如何实现更换网页皮肤
- ubuntu修改桌面主文件夹为英文