flutter页面添加透明遮罩

在这里插入图片描述
路由工具

import 'package:test/main.dart';
import 'package:flutter/material.dart';import 'circle_page_route.dart';class NavigatorUtil {static push(Widget page, {BuildContext context}) {return Navigator.push(context ?? navigatorKey.currentContext,MaterialPageRoute(builder: (context) => page));}/// 透明页面static pushTransparentRoute(Widget page, {BuildContext context}) {return Navigator.push(context ?? navigatorKey.currentContext,TransparentRoute(builder: (context) => page));}/// 透明关闭页面static pushTransparentReplacement(Widget page, {BuildContext context}) {return Navigator.pushReplacement(context ?? navigatorKey.currentContext,TransparentRoute(builder: (context) => page));}/// 关闭所有页面static pushReplacement(Widget page, {BuildContext context,}) {Navigator.pushReplacement(context ?? navigatorKey.currentContext,MaterialPageRoute(builder: (context) => page));}/// 跳转并且无法返回到上一页static pushAndNoBack(Widget page, {BuildContext context}) {return Navigator.pushAndRemoveUntil(context ?? navigatorKey.currentContext,MaterialPageRoute(builder: (context) => page),(route) => route == null);}/// 返回上一页static pop<T extends Object>({BuildContext context, T value}) {Navigator.pop(context == null ? navigatorKey.currentContext : context, value);}/// 删除指定路由static removeRoute(Widget page, {BuildContext context}) {return Navigator.removeRoute(context ?? navigatorKey.currentContext,MaterialPageRoute(builder: (context) => page));}
}

路由

//透明路由
class TransparentRoute extends PageRoute<void> {TransparentRoute({ this.builder,});final WidgetBuilder builder;Duration get transitionDuration => Duration(milliseconds: 100);bool get opaque => false;bool get barrierDismissible => false;Color get barrierColor => Colors.white.withOpacity(0.1);String get barrierLabel => null;bool get maintainState => true;Widget buildPage(BuildContext context, Animation<double> animation,Animation<double> secondaryAnimation) {return Container(child: builder(context),);}
}
// 孔雀开屏动画效果路由
class CirclePageRoute extends PageRoute {CirclePageRoute({ this.builder,});final WidgetBuilder builder;Duration get transitionDuration => Duration(milliseconds: 500);bool get opaque => false;bool get barrierDismissible => false;Color get barrierColor => Colors.white.withOpacity(0.1);String get barrierLabel => null;bool get maintainState => true;Widget buildPage(BuildContext context, Animation<double> animation,Animation<double> secondaryAnimation) {return Container(child: builder(context),);}Widget buildTransitions(BuildContext context, Animation<double> animation,Animation<double> secondaryAnimation, Widget child) {return AnimatedBuilder(animation: animation,builder: (context, child) {return ClipPath(clipper: CirclePath(animation.value),child: child,);},child: builder(context),);}
}

透明遮罩页面显示

//在需要遮罩的页面的initState()函数中使用
void initState() {super.initState();WidgetsBinding.instance.addPostFrameCallback((_) {NavigatorUtil.pushTransparentRoute(PushArticleGuidePage(itemType: 1,));});}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/21441.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装xxl-job

创建数据库 xxl_job数据库下载地址&#xff1a;https://pan.baidu.com/s/1XkirmK8_NUGj967MuBIPlQ?pwddlyl 拉取镜像 docker pull xuxueli/xxl-job-admin:2.3.1 防火墙打开端口 firewall-cmd --zonepublic --add-port8088/tcp --permanent firewall-cmd --reload 启动运行…

2023-7-13-第十八式观察者模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

Linux离线安装Jenkins、Maven、Gitlab、Git,部署Java项目

安装Java 《Linux安装java》 安装Maven 把Maven上传到Linux服务器/data/目录下进行解压 cd /data/ && tar -zxvf apache-maven-3.9.3-bin.tar.gz配置环境变量 vim /etc/profile找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL在下面追加 # mave…

Java基础---集合类

目录 典型回答 Collection和Collections有什么区别 Java中的Collection如何遍历迭代 Iterable和Iterator如何使用 为什么不把Iterable和Iterator合成一个使用 哪些集合类是线程安全的 典型回答 什么是集合 集合就是一个放数据的容器&#xff0c;准确的说是放数据对象引用…

Tomcat 基础

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、安装 三、 目录结构 四、启停 五、配置文件 1. server.xml (1) Server (2) Listener (3) GlobalNamingResources (4) Service 01.Connector (1) port…

Unity知识记录--项目升级URP

URP是指Unity的通用渲染管线&#xff0c;此处主要针对原有项目进行升级使用&#xff0c;但并不是所有的内容都可以直接通过升级完成&#xff0c;直接使用的Unity默认的shader通常可以完成直接升级&#xff0c;自己编写的shader通常需要重做。 首先我们先要安装这个Package&…

Centos 7 安装 Oracle 11G

Oracle 11G 安装教程 准备环境 p13390677_112040_Linux-x86-64_1of7.zipp13390677_112040_Linux-x86-64_2of7.zipCentos 7- rhel7-英文版的系统–不想换语言的执行(LANGen_US)– 传输 文件到服务器上 创建用户和组 [rootlocalhost ~]# groupadd oracle [rootlocalhost ~]…

12.4 ARM异常处理

目录 ARM异常处理&#xff08;一&#xff09; 异常 概念 异常处理机制 ARM异常源 概念 ARM异常源 ARM异常模式 ARM异常处理&#xff08;二&#xff09; ARM异常响应 异常向量表 异常返回 IRQ异常举例​编辑 ARM异常处理&#xff08;三 &#xff09; 异常优先级 …

深入理解netfilter和iptables

目录 Netfilter的设计与实现 内核数据包处理流 netfilter钩子 钩子触发点 NF_HOOK宏与Netfilter裁定 回调函数与优先级 iptables 内核空间模块 xt_table的初始化 ipt_do_table() 复杂度与更新延时 用户态的表&#xff0c;链与规则 conntrack Netfilter(结合iptable…

计算机网络概述(一)

因特网概述 网络&#xff0c;互联网与因特网的区别联系&#xff1a; 以上是使用有线和无线链路连接的两个网络。那么&#xff0c;要让这两个网络连接起来&#xff0c;就需要路由器。若干个网络通过多个路由器互联起来&#xff0c;就称为了互联网。 因特网是当今世界上最大的互…

prometheus采集服务的jmx数据,grafana通过dashboard展示jmx数据

prometheus采集服务的jmx数据&#xff0c;grafana通过dashboard展示jmx数据 一、下载prometheus二、解压prometheus三、查看prometheus目录四、查看prometheus版本五、查看prometheus的配置文件六、启动prometheus七、登陆prometheus八、查看prometheus jmx九、下载grafana十、…

Orangepi Zero2 全志H616简介

一、简介 Linux 系统 &#xff0c;平台是 ARM 架构 特性 CPU 全志H616四核64位1.5GHz高性能Cortex-A53处理器 GPU MaliG31MP2 SupportsOpenGLES1.0/2.0/3.2、OpenCL2.0 运行内存 1GBDDR3(与GPU共享&#xff09; 存储 TF卡插槽_16G,测试128G可支持、2MBSPIFlash WIFI蓝牙 AW8…