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 屏幕截图,超出屏幕部分截图相关推荐

  1. flutter屏幕截图实现,超出屏幕部分的截图实现

    flutter 屏幕截图需要用到RepaintBoundary来实现,用户RepaintBoundary包裹Widget即可实现对Widget的截图.如果是截长图可以参考一下方式: import 'd ...

  2. Windows屏幕工具(屏幕截图、贴图/屏幕取色/截图文字、表格识别/截图翻译、GIF录屏、GIF压缩)

    背景 你是不是每次要截图而需要打开微信或者QQ截图而感到麻烦,你是不是经常被类似某度文库不能复制文字而感到不爽,你是不是在需要获取屏幕上某个颜色而到处找工具,你是不是想将屏幕操作生成动图图分享给其他人 ...

  3. python延时函数_Python实现屏幕自动截图

    教程目录 需要实现的功能:自动屏幕截图 具体需求: 1. 支持设置截图频率和截图文件存储路径 2. 在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图 所需技术(搜索关键词): ...

  4. Movavi Screen Recorder 22 Mac(屏幕录像截图软件)

    Movavi Screen Recorder 22 for Mac是一款具有屏幕录制以及截图功能的屏幕录像截图软件,Movavi Screen Recorder Mac版使用非常简单,点击录制图标之后 ...

  5. android 屏幕长截图,对标iOS?Android 11或无缘屏幕长截图

    原标题:对标iOS?Android 11或无缘屏幕长截图 一直以来,不少用户都很喜欢用长截图功能进行页面截图,可以说在日常应用中这是一项比较实用的功能. 目前比较主流的小米MIUI.华为EMUI.三星 ...

  6. 实用!你不知道的小技巧,电脑快速实现屏幕长截图

    在日常工作中,我们经常需要用到屏幕长截图这个功能,而要实现这个功能往往需要下载好几个软件,而且经常截图的效果并不如意. 其实国民软件QQ目前已经有了长截图功能. 首先下载QQ最新版,然后在需要截图的页 ...

  7. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定文本对齐,段落中超出屏幕部分文字自动换行...

    <!DOCTYPE html> <html><head><title>菜鸟教程(runoob.com)</title> <meta n ...

  8. 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容

    本来呢,我是有专门整理小程序恶心bug的文章的,每次只要添加汇总就好, 但是呢,鉴于这个问题的恶心程度,所以我把他单独拿出来说了. ---------------------------------- ...

  9. 获取和保存当前屏幕的截图 实现的C++代码如下

    实现的C++代码如下: /** * 获取和保存当前屏幕的截图 */ private void getandsavecurrentimage() { //1 构建bitmap windowmanager ...

  10. el-cascader超出屏幕问题

    el-cascader超出屏幕问题,在全局样式里添加即可 .el-cascader-panel {height: 300px;}

最新文章

  1. js MD5加密处理
  2. Docker的使用(四:Docker Registry本地私有仓库搭建知识点总结)
  3. 《并行计算的编程模型》一2.4.1 GASNet段
  4. 分解连续自然数的和_小学奥数各年级经典题解题技巧大全——分解因数法(2)...
  5. 图:图的邻接表创建、深度优先遍历和广度优先遍历代码实现
  6. 好程序员分享居中一个float元素
  7. List<?> list= new ArrayList<?>接口引用指向实现类的对象.
  8. 2021某宝上的千月五级分润源码影视小说源码
  9. mysql报错型手工注入_mysql手工注入教程
  10. 冲刺One之站立会议6 /2015-5-19
  11. OSPF高级特性(华为设备)
  12. poj 1062 昂贵的聘礼 最短路
  13. matlab中如何创建使用构架数组?
  14. Java代码实现24点计算
  15. Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。
  16. python3和5_Python3算法之五:最大子序和
  17. maven 添加外部jar包到本地仓库
  18. 【学术】如何长时间高效学习
  19. SQL学习笔记——task4:集合运算与内连结
  20. unity打靶游戏的制作

热门文章

  1. 哈工大C语言程序设计精髓MOOC 第十二周编程题
  2. ios 根据日期知道周几_iOS-通过日期计算是周几
  3. 半自动化与全自动化的区别
  4. Git:rebase 是什么
  5. 软件测试邻居集成,软件测试之集成测试(ppt-3).ppt
  6. 计算机主机自动关机如何设置,电脑怎么设置自动关机?电脑自动关机方法教程 电脑维修技术网...
  7. python基础教程_python基础教程百度网盘
  8. 【clickhouse踩坑记录】clusters表中分片副本的浅析
  9. html 页面换皮肤,HTML中如何实现更换网页皮肤
  10. ubuntu修改桌面主文件夹为英文