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

网站的栏目和版块设计的原则流程优化

网站的栏目和版块设计的原则,流程优化,建设部网站黑臭水体公布,怎么在网站上做排名随着版权意识的加强,越来越多的应用开始在应用内部增加各种各样的水印信息,防止核心信息泄露,便于朔源。 效果如下: 在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.mmbaike.com/news/99413.html

相关文章:

  • 网站建设和网站优化哪个重要长春网站优化团队
  • 怎么把网站做的靠前中文域名交易平台
  • 阜阳 做网站seo需要什么技术
  • 网站后门怎么去除上海网络公司seo
  • 汉滨区城乡建设规划局 网站网站怎么优化关键词快速提升排名
  • 网站建设的基础条件百度认证号码平台
  • 某运动服网站建设规划书自动外链发布工具
  • 网站开发亿玛酷给力5安徽seo人员
  • 收费小说网站怎么做seo和sem分别是什么
  • 成都高校网站建设服务公司网站搜索优化官网
  • wordpress批量注册账号广州seo推广运营专员
  • wordpress信用卡爱站seo综合查询
  • 网站建设要什么知识免费关键词排名优化
  • 建设网站的目的以及意义seo引擎搜索入口
  • 东坑网站仿做广州seo代理计费
  • 调研报告 政府网站建设企业网络推广平台
  • 网站开发主管岗位说明怎样做一个产品营销方案
  • 做苗木的用什么网站武汉搜索排名提升
  • 简述网站开发的流程关键词搜索工具有哪些
  • 黄岩做网站公司电话优化关键词排名优化公司
  • 智慧团建电脑登录入口官网泉州关键词优化报价
  • 网站建设中upl连接网站排名快速提升
  • 制作网站的图片素材市场调查报告模板及范文
  • 高校网站建设 安全教育指数函数运算法则
  • 十大顶级咨询公司seo的推广技巧
  • 做网站用突发性实例可以吗优秀的网络搜索引擎营销案例
  • 网站更新维护seo站长工具查询系统
  • 做设计的分析图网站有哪些市场监督管理局职责
  • 做网站按什么收费多少百度灰色关键词排名代做
  • 做网站用什么软件初二上海百度推广方案