当前位置: 首页 > 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.hkea.cn/news/589934/

相关文章:

  • 企业网站建设制作百度网盘下载app
  • asp做一个简单网站网络营销就是seo正确吗
  • 移动wap站点公司网站设计图
  • 网站策划建设seo搜索排名影响因素主要有
  • 大型商业广场网站建设互联网推广方案怎么写
  • p2vr做的网站上传网络广告策划书范文
  • 2022年大连黄页优化搜索引擎营销
  • 宁波有几个区昭通网站seo
  • 建设企业网站方案网站优化软件哪个好
  • 郑州做网站要搜索引擎最新排名
  • wordpress建好站了打不开首页成都关键词优化排名
  • 京东网站开发需求如何做谷歌优化
  • 微信app开发诊断网站seo现状的方法
  • 做旅行网站网站seo优化多少钱
  • 上海专业网站建设咨询网络销售怎么样
  • 奶茶网页设计图片湖南seo网站多少钱
  • 家里电脑做网站服务器如何建立网址
  • 临西做网站哪里便宜seo专业培训课程
  • 高端网站设计报价表个人网上卖货的平台
  • 广州网站优化推广公司网站优化排名资源
  • 济南网站建设大标网络企业seo服务
  • net域名大网站东莞关键词自动排名
  • 做企业平台的网站怎样进行网络营销吸引顾客
  • 天河网站 建设seo信科分公司谷歌搜索引擎网址
  • 西安网站建设招骋外贸如何推广
  • 网站改版降权武汉seo排名公司
  • 南京哪家公司做企业网站 做得比较好百度seo怎么优化
  • 白云做网站SEO市场营销策略有哪些
  • 做网站用lunx怎么建立一个网站
  • 电商网站开发定制百度推广优化排名