Flutter 生成二維碼、圖片保存滤馍、圖片分享(空安全版本null safety)

使用到的庫(kù)(當(dāng)前版本):

//生成二維碼的庫(kù)岛琼,可增加logo

qr_flutter: ^4.0.0 

//保存圖片用到的庫(kù)

permission_handler: ^8.1.3

image_gallery_saver: ^1.6.9

path_provider: ^1.6.24

//分享庫(kù)

share: ^2.0.4

引用到文件:

import 'package:flutter/material.dart';

import 'package:flutter/rendering.dart';

import 'package:flutter/services.dart';

import 'package:image_gallery_saver/image_gallery_saver.dart';

import 'package:path_provider/path_provider.dart';

import 'package:permission_handler/permission_handler.dart';

import 'package:qr_flutter/qr_flutter.dart';

import 'package:share/share.dart';

import 'dart:ui' as ui;

生成圖片文件方法

Future<File> _shareUiImage(ui.Image uiImage) async {
    ByteData? finalByteData = await uiImage.toByteData(format: ui.ImageByteFormat.png);
    Uint8List finalPngBytes = finalByteData!.buffer.asUint8List();
    final document = await getApplicationDocumentsDirectory();
    final dir = Directory(document.path +'/Yelena_QR.png');
    final imageFile = File(dir.path);
    await imageFile.writeAsBytes(finalPngBytes);
    return imageFile;
  }

生成圖片API

GlobalKey _globalKey = GlobalKey();

RepaintBoundary(

key: globalKey,

        child: Container(需要截圖的部分)

)

生成圖片

GlobalKey _globalKey = GlobalKey();
//注意??這里有變更 增加強(qiáng)轉(zhuǎn)底循,舊版API無(wú)法使用
RenderRepaintBoundary? boundary = _globalKey.currentContext?.findRenderObject()! as RenderRepaintBoundary;

 ui.Image image = await boundary.toImage();

//*******************生成二維碼圖片*********************

qr_flutter: ^4.0.0 //此版本調(diào)用的API優(yōu)化的比較簡(jiǎn)單了巢株,

不帶logo

QrImage(
  data: 'This is a simple QR code',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
)

帶logo

QrImage(
  data: 'This QR code has an embedded image as well',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
  embeddedImage: AssetImage('assets/images/my_embedded_image.png'),
  embeddedImageStyle: QrEmbeddedImageStyle(
    size: Size(80, 80),
  ),
)

保存圖片方法

 //檢查是否有存儲(chǔ)權(quán)限
                          var status = await Permission.storage.status;
                          if (!status.isGranted) {
                            status = await Permission.storage.request();
                            print(status);
                            return;
                          }
                            
                            RenderRepaintBoundary? boundary = _globalKey.currentContext?.findRenderObject()! as RenderRepaintBoundary;
                            ui.Image image = await boundary.toImage();
                            ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
                            final result = await ImageGallerySaver.saveImage(byteData!.buffer.asUint8List(),quality:100,name: 'boss_Image'+DateTime.now().toString() );
                            if (result['isSuccess'].toString()=='true') {
                              print('保存成功');
                            }else{
                              print('保存失敗');
                            }

//*******************分享圖片方法*********************

RenderRepaintBoundary? boundary = _globalKey.currentContext?.findRenderObject()! as RenderRepaintBoundary;
                       ui.Image image = await boundary.toImage();
                       File imageFile = await _shareUiImage(image);
                       Share.shareFiles([imageFile.path]);

//注意一、RenderRepaintBoundary的變化
//注意二熙涤、import 'dart:ui' show lerpDouble;
Error: Not found: 'dart:ui'
檢查文件名是否重復(fù)

****日常備注小本本***不知是否有幫助到您******不管有無(wú)均希望能點(diǎn)個(gè)贊*********謝謝**************

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阁苞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子祠挫,更是在濱河造成了極大的恐慌那槽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件等舔,死亡現(xiàn)場(chǎng)離奇詭異骚灸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)慌植,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)甚牲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蝶柿,你說(shuō)我怎么就攤上這事丈钙。” “怎么了交汤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵雏赦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)星岗,這世上最難降的妖魔是什么填大? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮俏橘,結(jié)果婚禮上栋盹,老公的妹妹穿的比我還像新娘。我一直安慰自己敷矫,他們只是感情好例获,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著曹仗,像睡著了一般榨汤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怎茫,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天收壕,我揣著相機(jī)與錄音,去河邊找鬼轨蛤。 笑死蜜宪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祥山。 我是一名探鬼主播圃验,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缝呕!你這毒婦竟也來(lái)了澳窑?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤供常,失蹤者是張志新(化名)和其女友劉穎摊聋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體栈暇,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麻裁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了源祈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煎源。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖新博,靈堂內(nèi)的尸體忽然破棺而出薪夕,到底是詐尸還是另有隱情,我是刑警寧澤赫悄,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布原献,位于F島的核電站馏慨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姑隅。R本人自食惡果不足惜写隶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讲仰。 院中可真熱鬧慕趴,春花似錦、人聲如沸鄙陡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)趁矾。三九已至耙册,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毫捣,已是汗流浹背详拙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔓同,地道東北人饶辙。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像斑粱,于是被迫代替她去往敵國(guó)和親弃揽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容