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

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

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

正文

項目開發(fā)的過程中,經(jīng)常會遇到添加水印的需求,其作用無非就是防止重要信息通過截圖外傳。(雖然我覺得并沒有什么卵用,但領(lǐng)導(dǎo)的需求是不容質(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設(shè)置傾斜角度,Color設(shè)置文本顏色等。

其中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,
                        ),
                      ),
                    ),
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

是不是很簡單?

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

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

相關(guān)文章

  • 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?使用小結(jié)

    Android?gradient?使用小結(jié)

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

    Android 全局異常捕獲實例詳解

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

    Android VNDK使用及原理深入探究

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

    activity控制對話框風(fēng)格、顯示大小與位置

    對于對話框風(fēng)格大家普遍使用PopupWindow,也有許多朋友開發(fā)設(shè)計時使用的是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是用于構(gòu)建原生Android UI的現(xiàn)代工具包。Jetpack Compose使用更少的代碼,強大的工具和直觀的Kotlin API,簡化并加速了Android上的UI開發(fā)。本文將利用Jetpack Compose繪制可愛的天氣動畫,感興趣的可以了解一下
    2022-01-01

最新評論

轮台县| 广水市| 闽侯县| 青河县| 湟源县| 荥经县| 广安市| 龙井市| 保定市| 浮梁县| 青阳县| 巴楚县| 旌德县| 延安市| 无极县| 黑山县| 玉环县| 惠州市| 隆子县| 霸州市| 东城区| 龙岩市| 犍为县| 射阳县| 上思县| 文水县| 墨玉县| 宾阳县| 镇巴县| 东兰县| 闻喜县| 巴青县| 大余县| 陵川县| 中江县| 石楼县| 蕲春县| 云和县| 腾冲县| 海城市| 双鸭山市|