最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter快速制作一個水印組件實例詳解

 更新時間:2023年01月30日 15:43:40   作者:半點橘色  
這篇文章主要為大家介紹了Flutter快速制作一個水印組件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

項目開發(fā)的過程中,經(jīng)常會遇到添加水印的需求,其作用無非就是防止重要信息通過截圖外傳。(雖然我覺得并沒有什么卵用,但領導的需求是不容質(zhì)疑的)

那么,作為一線碼農(nóng)的我,也只能屁顛屁顛的開搞。

通過child屬性將水印疊加給子組件

水印組件,既然是組件,就是需要發(fā)揚Flutter套娃的精神,通過child屬性將水印疊加給子組件。

class Watermark extends StatelessWidget {
  const Watermark({Key? key, required this.child}) : super(key: key);
  final Widget child;
  /// 水印信息
  final String waterInfo = '半點橘色 6666';
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        child,
        _createWatermark(),
      ],
    );
  }
  /// ....
}

waterInfo屬性一般情況是獲取登錄用戶信息進行動態(tài)寫入,在demo中就寫死了。

build方法的內(nèi)容很簡單,無非是通過Stack進行堆疊布局,通過createWatermark方法創(chuàng)建水印,放置于子組件的上方。

createWatermark方法

核心內(nèi)容就在于createWatermark方法。

  /// 創(chuàng)建水印
  Widget _createWatermark() {
    return IgnorePointer(
      child: Column(
        children: List.generate(
          6,
          (index) => Expanded(
            child: Row(
              children: List.generate(
                3,
                (index) => Expanded(
                  child: Center(
                    child: Transform.rotate(
                      angle: -0.34,
                      child: Text(
                        waterInfo,
                        style: const TextStyle(
                          color: Color(0x10000000),
                          fontSize: 14,
                          decoration: TextDecoration.none,
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }

創(chuàng)建水印可以通過橫向(Row)和縱向(Column)布局,將水印文本內(nèi)容渲染在頁面中。當然,樣式可以隨喜愛而定,例如Transform.rotate設置傾斜角度,Color設置文本顏色等。

其中IgnorePointer組件是個重點。

它可以讓點擊事件穿透容器,直達下層。這樣一來即使水印疊加在最頂層,也不會影響到頁面手勢的操作。

IgnorePointer還有個同胞兄弟AbsorbPointer,它的作用與IgnorePointer相反,會消費掉點擊事件,使其無法穿透容器向下傳遞。

Watermark組件的完整代碼

import 'package:flutter/material.dart';
/// 水印組件
class Watermark extends StatelessWidget {
  const Watermark({Key? key, required this.child}) : super(key: key);
  final Widget child;
  final String waterInfo = '半點橘色 6666';
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        child,
        _createWatermark(),
      ],
    );
  }
  /// 創(chuàng)建水印
  Widget _createWatermark() {
    return IgnorePointer(
      child: Column(
        children: List.generate(
          6,
          (index) => Expanded(
            child: Row(
              children: List.generate(
                3,
                (index) => Expanded(
                  child: Center(
                    child: Transform.rotate(
                      angle: -0.34,
                      child: Text(
                        waterInfo,
                        style: const TextStyle(
                          color: Color(0x10000000),
                          fontSize: 14,
                          decoration: TextDecoration.none,
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

是不是很簡單?

水印組件的核心就是這么簡單,大家可以在此基礎上,結合項目的需求進行拓展開發(fā)。

以上就是Flutter快速制作一個水印組件實例詳解的詳細內(nèi)容,更多關于Flutter制作水印組件的資料請關注腳本之家其它相關文章!

相關文章

  • Android獲取位置信息的方法

    Android獲取位置信息的方法

    這篇文章主要為大家詳細介紹了Android獲取位置信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Android?貝塞爾曲線繪制一個波浪球

    Android?貝塞爾曲線繪制一個波浪球

    當?flutter?的現(xiàn)有組件無法滿足產(chǎn)品要求的UI效果時,我們就需要通過自繪組件的方式來進行實現(xiàn)了。本文章就來介紹如何用貝塞爾曲線實現(xiàn)一個帶文本的波浪球,需要的可以參考一下
    2022-05-05
  • Android 6.0調(diào)用相機圖冊崩潰的完美解決方案

    Android 6.0調(diào)用相機圖冊崩潰的完美解決方案

    這篇文章主要介紹了Android 6.0調(diào)用相機圖冊崩潰的完美解決方案,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Android?gradient?使用小結

    Android?gradient?使用小結

    在Android中使用gradient(漸變)通常是通過drawable文件來設置背景,下面是可以直接用的幾種用法匯總,包括線性漸變、徑向漸變、掃描漸變(sweep)等,感興趣的朋友一起看看吧
    2025-04-04
  • Android 全局異常捕獲實例詳解

    Android 全局異常捕獲實例詳解

    這篇文章主要介紹了 Android 全局異常捕獲實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • Android VNDK使用及原理深入探究

    Android VNDK使用及原理深入探究

    這篇文章主要為大家介紹了Android VNDK使用及原理深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • activity控制對話框風格、顯示大小與位置

    activity控制對話框風格、顯示大小與位置

    對于對話框風格大家普遍使用PopupWindow,也有許多朋友開發(fā)設計時使用的是activity對話框方式,因此,本文對如何通過activity實現(xiàn)與PopupWindow相同的效果進行詳細介紹,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • Android 使用Vitamio打造自己的萬能播放器(2)—— 手勢控制亮度、音量、縮放

    Android 使用Vitamio打造自己的萬能播放器(2)—— 手勢控制亮度、音量、縮放

    本文主要介紹Android Vitamio插件的一些功能,這里主要介紹 Android Vitamio插件的手勢控制亮度,音量,縮放的功能,并提供代碼實例,有需要的小伙伴可以參考下
    2016-07-07
  • Android視頻壓縮的示例代碼

    Android視頻壓縮的示例代碼

    本篇文章主要介紹了Android視頻壓縮的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 利用Jetpack Compose繪制可愛的天氣動畫

    利用Jetpack Compose繪制可愛的天氣動畫

    Jetpack Compose是用于構建原生Android UI的現(xiàn)代工具包。Jetpack Compose使用更少的代碼,強大的工具和直觀的Kotlin API,簡化并加速了Android上的UI開發(fā)。本文將利用Jetpack Compose繪制可愛的天氣動畫,感興趣的可以了解一下
    2022-01-01

最新評論

陆川县| 滁州市| 肥乡县| 界首市| 光山县| 永春县| 和顺县| 西宁市| 民县| 桂阳县| 沛县| 望都县| 榕江县| 理塘县| 五大连池市| 长沙市| 宁波市| 蓬安县| 呼图壁县| 监利县| 澳门| 汽车| 皮山县| 黄山市| 湖南省| 云和县| 永丰县| 九寨沟县| 鄂尔多斯市| 盐津县| 韶山市| 德州市| 景德镇市| 南华县| 陇南市| 都匀市| 舟山市| 桓仁| 虞城县| 吕梁市| 内江市|