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

制作网站的钱淘金网站建设

制作网站的钱,淘金网站建设,网站seo推广营销,wordpress 制作单页随着版权意识的加强#xff0c;越来越多的应用开始在应用内部增加各种各样的水印信息#xff0c;防止核心信息泄露#xff0c;便于朔源。 效果如下#xff1a; 在Flutter中增加全局水印的方式#xff0c;目前有两种实现。 方案一#xff0c;在native层添加一个遮罩层越来越多的应用开始在应用内部增加各种各样的水印信息防止核心信息泄露便于朔源。 效果如下 在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);overrideWidget build(BuildContext context) {return IgnorePointer(//这个很关键一定要忽略焦点事件child: SafeArea(child: Padding(padding: const EdgeInsets.only(top: 50),child: Column(children: createColumnWidgets(),),),),);}ListWidget createRowWidgets() {ListWidget 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;}ListWidget createColumnWidgets() {ListWidget 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!);}/// 移除水印Futurevoid removeWatermark() async {if (_overlayEntry ! null) {_overlayEntry?.remove();_overlayEntry null;}} } 工具类内容简单主要用于添加和删除OverlayEntry毕竟不是所有界面都需要添加水印。 第三步在需要的界面增加水印 class _MyHomePageState extends StateMyHomePage with WidgetsBindingObserver {GlobalWaterMarkUtil waterMarkUtil GlobalWaterMarkUtil();overridevoid initState() {super.initState();addGlobalWatermark();}///添加全局水印void addGlobalWatermark(){WidgetsBinding.instance.addPostFrameCallback((timeStamp) {waterMarkUtil.addCustomWatermark(context,WaterMarkWidget(text: Hello Flutter \n ${DateTime.now()},));});}overridevoid dispose() {waterMarkUtil.removeWatermark();super.dispose();}}经过这简单的三步即可实现全局水印的效果在使用时一定要记得在dispose中调用移除函数不然容易出现水印重叠的效果如果是针对整个App添加水印那只需要在Flutter的HomePage里面添加一次即可因为HomePage永远在栈底所以水印将一直悬浮在所有页面之上。
http://www.dnsts.com.cn/news/217691.html

相关文章:

  • 网站常州建设外包软件公司
  • 网站做扫一扫绿茵足球网站建设
  • 财务公司网站模板国外网站开发公司
  • 网站标头图片切换宿迁哪家做网站推广
  • 做再生料的网站网站开发的工资
  • 网站怎么做gps定位网站建设次年续费合同
  • 网站开发能干什么河南省建筑工程网
  • 头条淘宝联盟网站推广怎么做泊头网站排名优化
  • 大岭山仿做网站导入视频生成3d动画
  • 免费网站推广软件有哪些上海建设银行网站查询余额
  • 郑州网站建设鹏之信设计软件图标
  • 思乐科技 成都网站建设优化排名推广技术网站
  • 网站做端口是什么问题公众号网站怎么做的
  • 西安做企业网站专业seo外包
  • 如何用手机创建网站青州网站网站建设
  • 企业商城网站多少钱m3型虚拟主机 wordpress
  • 县城网站怎么做建筑公司网站石家庄
  • 网站开发范例文档网站域名出售
  • html网站设计范例电子版个人简历
  • 个人网站备案取名WordPress安装进入不了
  • 怎么在建设厅网站报名宁波seo外包平台
  • 好看的网站界面设计产品网站建设设计方案
  • 学院宣传网站制作网站刷排名工具
  • 云南网络公司排名海东地区谷歌seo网络优化
  • 企业网站推广成功案例网易企业邮箱手机端登录不上咋办
  • 一般的网站建设兰州一氧化碳
  • 小型教育网站的开发与建设论文做药的文献一般在哪些网站查找
  • h5商城网站是什么意思wordpress录入信息
  • node.js网站开发框架陕西省西安市事业单位招聘网
  • 动物做logo的网站郑州新闻发布会最新消息今天视频