国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能

這篇具有很好參考價(jià)值的文章主要介紹了flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能

在開(kāi)發(fā)中,遇到需要使用截圖,像iOS可以截圖UIView獲取到UIImage,在flutter中可以使用RepaintBoundary實(shí)現(xiàn)截圖功能

相機(jī)拍攝的圖片:
flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能,flutter開(kāi)發(fā)實(shí)戰(zhàn),flutter,移動(dòng)開(kāi)發(fā),flutter

RepaintBoundary截圖后的圖片
flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能,flutter開(kāi)發(fā)實(shí)戰(zhàn),flutter,移動(dòng)開(kāi)發(fā),flutter

一、RepaintBoundary

RepaintBoundary是繪制邊界。

如果CustomPaint有子節(jié)點(diǎn),為了避免子節(jié)點(diǎn)不必要的重繪并提高性能,通常情況下都會(huì)將子節(jié)點(diǎn)包裹在RepaintBoundary組件中,這樣會(huì)在繪制時(shí)就會(huì)創(chuàng)建一個(gè)新的繪制層(Layer),其子組件將在新的Layer上繪制,而父組件將在原來(lái)Layer上繪制,也就是說(shuō)RepaintBoundary 子組件的繪制將獨(dú)立于父組件的繪制,RepaintBoundary會(huì)隔離其子節(jié)點(diǎn)和CustomPaint本身的繪制邊界。示例如下:


CustomPaint(
  size: Size(300, 300), //指定畫(huà)布大小
  painter: MyPainter(),
  child: RepaintBoundary(child:...)), 
)

參考:https://book.flutterchina.club/chapter10/custom_paint.html#_10-4-1-custompaint

二、實(shí)現(xiàn)Widget截圖

實(shí)現(xiàn)Widget截圖,需要將Widget嵌套在RepaintBoundary里,需要用到Globalkey
示例如下


            Container(
              width: widget.width,
              height: widget.height,
              clipBehavior: Clip.hardEdge,
              decoration: BoxDecoration(
                color: Colors.transparent,
              ),
              child: RepaintBoundary(
                key: _cameraViewGlobalKey,
                child: Transform.scale(
                  scale: scale * aspectRatio,
                  child: AspectRatio(
                    aspectRatio: aspectRatio,
                    child: Center(
                      child: CameraPreview(
                        controller!,
                      ),
                    ),
                  ),
                ),
              ),
            );

實(shí)現(xiàn)截圖功能


  // 根據(jù)GlobalKey來(lái)截圖Widget
  static Future<Uint8List?> makeImageUInt8List(GlobalKey globalKey) async {
    RenderRepaintBoundary boundary =
        globalKey.currentContext?.findRenderObject() as RenderRepaintBoundary;
    // 這個(gè)可以獲取當(dāng)前設(shè)備的像素比
    var dpr = ui.window.devicePixelRatio;
    ui.Image image = await boundary.toImage(pixelRatio: dpr);
    ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List? pngBytes = byteData?.buffer.asUint8List();
    return pngBytes;
  }


獲得Uint8List,可以直接將其寫(xiě)入文件或者使用Image展示。

          if (uInt8List != null) {
            await File(imagePath).writeAsBytes(uInt8List);
          }

三、小結(jié)

flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能,像iOS可以截圖UIView獲取到UIImage,在flutter中可以使用RepaintBoundary實(shí)現(xiàn)截圖功能。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-614077.html

到了這里,關(guān)于flutter開(kāi)發(fā)實(shí)戰(zhàn)-RepaintBoundary實(shí)現(xiàn)Widget截圖功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)推送功能Push Notification

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)推送功能Push Notification

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)推送功能Push Notification 推送服務(wù)現(xiàn)在可以說(shuō)是所有 App 的標(biāo)配了,最近在Flutter工程項(xiàng)目上實(shí)現(xiàn)推送功能。flutter上實(shí)現(xiàn)推送功能需要依賴(lài)原生的功能,需要插件實(shí)現(xiàn),這里使用的是極光推送的服務(wù)。 效果圖如下 在使用極光推送功能時(shí),需要使用的是極光提

    2024年02月16日
    瀏覽(15)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)首頁(yè)分類(lèi)目錄入口切換功能

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-實(shí)現(xiàn)首頁(yè)分類(lèi)目錄入口切換功能

    。 在開(kāi)發(fā)中經(jīng)常遇到首頁(yè)的分類(lèi)入口,如美團(tuán)的美食團(tuán)購(gòu)、打車(chē)等入口,左右切換還可以分頁(yè)更多展示。 在pubspec.yaml引入 由于我這里按照一頁(yè)8條展示,兩行四列展示格式。 當(dāng)列表list傳入的控件時(shí)候,一共的頁(yè)數(shù)為 通過(guò)列表,一頁(yè)數(shù)量計(jì)算每一頁(yè)應(yīng)該展示多少個(gè)按鈕。 一

    2024年02月14日
    瀏覽(27)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-Camera自定義相機(jī)拍照功能實(shí)現(xiàn)

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-Camera自定義相機(jī)拍照功能實(shí)現(xiàn)

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-Camera自定義相機(jī)拍照功能實(shí)現(xiàn) 在項(xiàng)目中使用image_picker插件時(shí)候,在android設(shè)備上使用無(wú)法默認(rèn)設(shè)置前置攝像頭(暫時(shí)不清楚什么原因),由于項(xiàng)目默認(rèn)需要使用前置攝像頭,所以最終采用自定義相機(jī)實(shí)現(xiàn)拍照功能。 在工程的iOS的info.plist文件中添加相機(jī)、麥克風(fēng)

    2024年02月21日
    瀏覽(29)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-flutter二維碼條形碼掃一掃功能實(shí)現(xiàn)

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-flutter二維碼條形碼掃一掃功能實(shí)現(xiàn)

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-flutter二維碼條形碼掃一掃功能實(shí)現(xiàn) flutter開(kāi)發(fā)實(shí)戰(zhàn)-flutter二維碼掃一掃功能實(shí)現(xiàn),要使用到攝像頭的原生的功能,使用的是插件:scan 效果圖如下 1.1 iOS權(quán)限設(shè)置 1.2 android權(quán)限設(shè)置 1.3 使用ScanView的widget 掃一掃Widget使用ScanController來(lái)做響應(yīng)的控制 暫停/恢復(fù)camera 識(shí)

    2024年02月16日
    瀏覽(24)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-hero實(shí)現(xiàn)圖片預(yù)覽功能extend_image

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-hero實(shí)現(xiàn)圖片預(yù)覽功能extend_image

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-hero實(shí)現(xiàn)圖片預(yù)覽功能extend_image 在開(kāi)發(fā)中,經(jīng)常遇到需要圖片預(yù)覽,當(dāng)feed中點(diǎn)擊一個(gè)圖片,開(kāi)啟預(yù)覽,多個(gè)圖片可以左右切換swiper,雙擊圖片及手勢(shì)進(jìn)行縮放功能。 這個(gè)主要實(shí)現(xiàn)使用extend_image插件。在點(diǎn)擊圖片時(shí)候使用hero動(dòng)畫(huà)進(jìn)行展示。 Hero簡(jiǎn)單使用,可以查

    2024年02月08日
    瀏覽(26)
  • Flutter學(xué)習(xí)四:Flutter開(kāi)發(fā)基礎(chǔ)(一)Widget

    Flutter學(xué)習(xí)四:Flutter開(kāi)發(fā)基礎(chǔ)(一)Widget

    目錄 0 引言 1 Widget 簡(jiǎn)介 1.1 Widget 概念 1.2?Widget 接口 1.3?Flutter中的四棵樹(shù) 1.4?StatelessWidget 1.4.1 簡(jiǎn)介 1.4.2?Context上下文 1.5?StatefulWidget 1.6??State 1.6.1 簡(jiǎn)介 1.6.2?State生命周期 1.7??在 widget 樹(shù)中獲取State對(duì)象 1.7.1 通過(guò)Context獲取 1.7.2 通過(guò)GlobalKey獲取 1.8?通過(guò) RenderObject 自定義 Wid

    2024年02月16日
    瀏覽(26)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-自定義相機(jī)camera功能

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-自定義相機(jī)camera功能

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-自定義相機(jī)camera功能。 Flutter 本質(zhì)上只是一個(gè) UI 框架,運(yùn)行在宿主平臺(tái)之上,F(xiàn)lutter 本身是無(wú)法提供一些系統(tǒng)能力,比如使用藍(lán)牙、相機(jī)、GPS等,因此要在 Flutter 中調(diào)用這些能力就必須和原生平臺(tái)進(jìn)行通信。 實(shí)現(xiàn)相機(jī)功能,我們使用的是camera插件。 在pubspec.

    2024年02月15日
    瀏覽(23)
  • HarmonyOS實(shí)戰(zhàn)開(kāi)發(fā)-通過(guò)screenshot模塊實(shí)現(xiàn)屏幕截圖 。

    HarmonyOS實(shí)戰(zhàn)開(kāi)發(fā)-通過(guò)screenshot模塊實(shí)現(xiàn)屏幕截圖 。

    本示例展示全屏截圖和屏幕局部截圖。 本示例通過(guò)screenshot模塊實(shí)現(xiàn)屏幕截圖 ,通過(guò)window模塊實(shí)現(xiàn)隱私窗口切換,通過(guò)display模塊查詢(xún)當(dāng)前隱私窗口。 使用說(shuō)明: 點(diǎn)擊右上角圖標(biāo)打開(kāi)彈窗,選擇截屏,展示全屏截圖;選擇局部截屏,選擇截屏區(qū)域,點(diǎn)擊右下角完成,展示局部

    2024年04月13日
    瀏覽(22)
  • Flutter性能揭秘之RepaintBoundary

    作者:xuyisheng Flutter會(huì)在屏幕上繪制Widget。如果一個(gè)Widget的內(nèi)容需要更新,那就只能重繪了。盡管如此,F(xiàn)lutter同樣會(huì)重新繪制一些Widget,而這些Widget的內(nèi)容仍有部分未被改變。這可能會(huì)影響應(yīng)用程序的執(zhí)行性能,有時(shí)影響會(huì)非常巨大。如果您正在尋找一種方法,來(lái)防止不必要

    2024年02月11日
    瀏覽(19)
  • 從0到1,手把手帶你開(kāi)發(fā)截圖工具ScreenCap------001實(shí)現(xiàn)基本的截圖功能

    從0到1,手把手帶你開(kāi)發(fā)截圖工具ScreenCap------001實(shí)現(xiàn)基本的截圖功能

    從0到1,手把手帶你開(kāi)發(fā)windows端的截屏軟件ScreenCap 當(dāng)前版本:ScreenCap---001 支持全屏截圖 支持鼠標(biāo)拖動(dòng)截圖區(qū)域 支持拖拽截圖 支持保存全屏截圖 支持另存截圖到其他位置 注:博主所有資源永久免費(fèi),若有幫助,請(qǐng)點(diǎn)贊轉(zhuǎn)發(fā)是對(duì)我莫大的幫助 注:博主本人學(xué)習(xí)過(guò)程的分享,

    2024年02月05日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包