当前位置: 首页 > news >正文

网站的栏目和版块设计的原则长沙seo网站

网站的栏目和版块设计的原则,长沙seo网站,网站做友链,企业怎么做app网址随着版权意识的加强,越来越多的应用开始在应用内部增加各种各样的水印信息,防止核心信息泄露,便于朔源。 效果如下: 在Flutter中增加全局水印的方式,目前有两种实现。 方案一,在native层添加一个遮罩层&a…

随着版权意识的加强,越来越多的应用开始在应用内部增加各种各样的水印信息,防止核心信息泄露,便于朔源。
效果如下:
在这里插入图片描述

在Flutter中增加全局水印的方式,目前有两种实现。
方案一,在native层添加一个遮罩层,但这种方式需要双端都要开发,效率低下,维护成本高,优点当然也有,那就是性能高。
方案二:直接在Flutter中添加一个悬浮层实现企微,飞书等界面的水印效果,就如上图中的效果一样。
为了凸显Flutter的高效,当然是直接使用Flutter中的Api进行实现。

第一步:创建所需的水印样式:

import 'dart:math';import 'package:flutter/material.dart';class WaterMarkWidget extends StatelessWidget {final int rowCount;//控制每一行显示的水印个数final int columnCount;//控制每一列显示的个数final String text;//水印文案const WaterMarkWidget({Key? key,this.rowCount = 2,this.columnCount = 3,required this.text,}) : super(key: key);Widget build(BuildContext context) {return IgnorePointer(//这个很关键,一定要忽略焦点事件child: SafeArea(child: Padding(padding: const EdgeInsets.only(top: 50),child: Column(children: createColumnWidgets(),),),),);}List<Widget> createRowWidgets() {List<Widget> list = [];for (var i = 0; i < rowCount; i++) {final widget = Expanded(child: Center(child: Transform.rotate(angle: -pi / 4.5,child: Opacity(opacity: 0.2,child: Text(text,style:  const TextStyle(fontSize: 12,color: Colors.blue,),),),),),);list.add(widget);}return list;}List<Widget> createColumnWidgets() {List<Widget> list = [];for (var i = 0; i < columnCount; i++) {final widget = Expanded(child: Row(children: createRowWidgets(),));list.add(widget);}return list;}
}

在这段代码中,核心要注意的是,增加焦点忽略,不然就会出现焦点抢占的问题。

第二步:创建一个水印管理工具类

主要使用了OverlayEntry的特性,动态添加与删除。

import 'package:flutter/material.dart';class GlobalWaterMarkUtil {static final GlobalWaterMarkUtil _singleton = GlobalWaterMarkUtil._internal();factory GlobalWaterMarkUtil() {return _singleton;}GlobalWaterMarkUtil._internal();OverlayEntry? _overlayEntry;/// 添加自定义水印。将[widget]覆盖在所有视图的最上层void addCustomWatermark(BuildContext context, Widget widget) {_overlayEntry?.remove();OverlayState? overlayState = Overlay.of(context);_overlayEntry = OverlayEntry(builder: (context) => widget);overlayState.insert(_overlayEntry!);}/// 移除水印Future<void> removeWatermark() async {if (_overlayEntry != null) {_overlayEntry?.remove();_overlayEntry = null;}}
}

工具类内容简单,主要用于添加和删除OverlayEntry,毕竟不是所有界面都需要添加水印。

第三步:在需要的界面增加水印

class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {GlobalWaterMarkUtil waterMarkUtil = GlobalWaterMarkUtil();void initState() {super.initState();addGlobalWatermark();}///添加全局水印void addGlobalWatermark(){WidgetsBinding.instance.addPostFrameCallback((timeStamp) {waterMarkUtil.addCustomWatermark(context,WaterMarkWidget(text: 'Hello Flutter \n ${DateTime.now()}',));});}void dispose() {waterMarkUtil.removeWatermark();super.dispose();}}

经过这简单的三步,即可实现全局水印的效果,在使用时,一定要记得在dispose中调用移除函数,不然容易出现水印重叠的效果,如果是针对整个App添加水印,那只需要在Flutter的HomePage里面添加一次即可,因为HomePage永远在栈底,所以水印将一直悬浮在所有页面之上。

http://www.wangmingla.cn/news/40311.html

相关文章:

  • 怎么做网站广告赚钱网站推广服务报价表
  • 选择佛山顺德网站设计百度账号免费注册
  • 小网站要备案吗百度怎么进入官方网站
  • 自己做海报的网站自己的网站怎么在百度上面推广
  • 政府网站建设战略企业网站的推广阶段
  • 给个网站你们知道的seoer是什么意思
  • 新农村建设举报网站百度手机助手苹果版
  • 有啥网站是专做时尚穿搭seo网址优化靠谱
  • 自己做网站靠什么赚钱吗快速网站seo效果
  • 响应式网站效果图做多大的sem和seo的区别
  • 教学网站模板下载搜索引擎营销是什么意思
  • php 怎么做网站超链接查域名注册详细信息查询
  • 外贸网站模板seo网站推广方式
  • 做网站的图哪来搜索引擎优化方案案例
  • 重庆市建设工程信息网 最权威平台中项网seo专业培训seo专业培训
  • 获取微信公众号首图东莞网络优化公司
  • 优酷视频上传网站源码百度视频推广
  • wordpress 返回顶部 插件网站优化资源
  • 郑州公司网站建设哪家好网络营销策略有哪些
  • 网站建设工作 方案网站seo排名优化工具在线
  • 58南浔做网站建网站教学
  • 武汉微信网站开发怎样在百度上发帖子
  • dw博客网站怎么做百度信息流推广技巧
  • 做海报的素材哪个网站网课培训机构排名前十
  • 在那里建立公司网站网站优化有哪些技巧
  • 课程网站建设的基本原理网络推广好做吗
  • 网站建设招标模板如何做好推广
  • 做一个门户网站要多少钱建站官网
  • 邯郸网站建设邯郸网站制作举出最新的网络营销的案例
  • 中英网站模板如何做好互联网营销推广