准备工作:两个依赖一个插件
保存图片插件依赖,开始想用path_provider保存图片来着,代码运行后可以返回保存图片的路径但是保存不到手机中,小编不是专业搞安卓开发的没深究
截图插件:RepaintBoundary
开始上代码:
//首先在你需要生成二维码页面中声明一个GlobalKey
GlobalKey _globalKey = new GlobalKey();
//生成二维码,并将二维码包裹在RepaintBoundary插件中
//截图插件
RepaintBoundary(
key: _globalKey,
//生成二维码插件
child: QrImage(
//小编这里把生成的二维码设置了前后背景色,不设置的情况下保存图片后因为是png格式的,白色透明的地方都是黑色的,导致查看图片时就是一个黑图
foregroundColor: Colors.white, //前景色
backgroundColor: Colors.black, //背景色
data: "你的二维码链接",
size: 200.0,
),
),
//随便写个按钮什么的截图
RaisedButton(
color: Colors.blue,
child: Text(
"保存二维码",
style: TextStyle(
color: Colors.white
),
),
onPressed: (){
//截图保存图片方法
_widgetShot();
},
)
Future<Uint8List> _widgetShot () async {
RenderRepaintBoundary boundary = _globalKey.currentContext.findRenderObject();
var image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final result = await ImageGallerySaver.saveImage(Uint8List.fromList(pngBytes));
if (result != null && result != "") {
//返回路径
String str = Uri.decodeComponent(result);
Fluttertoast.showToast(
msg: "成功保存到$str",
gravity: ToastGravity.BOTTOM,
timeInSecForIos: 5
);
} else {
Fluttertoast.showToast(
msg: "保存失败",
gravity: ToastGravity.BOTTOM,
timeInSecForIos: 3
);
}
}
大功告成!!!其他引用的插件各位在编辑器里提示引用下就可以了~