Flutter 生成图片并保存

  1. 概述
    Flutter生成图片相当于是对某一个Widget进行截图保存
    保存图片需要获取文件存储权限
    引入插件permission_handler(权限控制插件)image_gallery_saver(文件保存插件)

  2. 设置修改权限文件
    引入插件后,需要对ios和安卓分别设置权限
    安卓修改文件android/app/src/main/AndroidManifest.xml,添加如下代码

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

ios修改文件ios/Runner/Info.plist,添加如下代码

<key>NSPhotoLibraryAddUsageDescription</key>
<string>请允许APP保存图片到相册</string>

3.flutter代码中使用

GlobalKey globalKey = GlobalKey();
........
                  RepaintBoundary(
                    key: globalKey,
                    child: Container(
                    ...........
                    ),
                  )


                    //触发保存
                    onTap: () async {

                      //检查是否有存储权限
                      var status = await Permission.storage.status;
                      if (!status.isGranted) {
                        status = await Permission.storage.request();

                        print(status);
                        return;
                      }

                      BuildContext buildContext = globalKey.currentContext;

                      if (null != buildContext){
                        RenderRepaintBoundary boundary = buildContext.findRenderObject();
                        ui.Image image = await boundary.toImage();
                        ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
                        final result = await ImageGallerySaver.saveImage(byteData.buffer.asUint8List());
                        MessageToast.succ(context, '海报已保存到相册');
                      }
                      Navigator.of(context).pop();
                    },
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值