flutter页面添加透明遮罩

这篇具有很好参考价值的文章主要介绍了flutter页面添加透明遮罩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter页面添加透明遮罩,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),
    );
  }
}

透明遮罩页面显示文章来源地址https://www.toymoban.com/news/detail-561218.html

//在需要遮罩的页面的initState()函数中使用

  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
     NavigatorUtil.pushTransparentRoute(PushArticleGuidePage(
          itemType: 1,
        ));
    });
  }

到了这里,关于flutter页面添加透明遮罩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【uniapp】禁止遮罩层下的页面滚动解决办法

    不少朋友在日常工作中都会遇到需要自定义弹窗的时候,当开启弹窗后,却发现存在弹窗下的页面依旧可以被触发滚动的问题,以下是相关的解决方法。 根据是否打开的弹窗状态,对最外层 view 设置 height 和 overflow: 这个方法通过对页面设置高度来限制底层页面滚动的问题,

    2024年02月07日
    浏览(54)
  • 【Flutter】如何完成一个透明沉浸式状态栏

    之前遇到的一个需求需要做一个透明的沉浸式状态栏,中间遇到一些问题,记录下来,给有需要的小伙伴指指路。 默认的状态栏,大多有系统自带UI,很多时候看起来跟我们的app不协调。 修改main.dart

    2024年02月01日
    浏览(54)
  • 【bug】vuxUI组件popup弹出框在IOS中遮罩层会遮住页面

    可以增加自定义方法v-transfer-dom transfer-dom’.js // Thanks to: https://github.com/calebroseland/vue-dom-portal

    2024年04月28日
    浏览(80)
  • 解决el-dialog弹出时,页面抖动,右侧会缩小的问题(即滚动条被遮罩层覆盖的问题)

    在弹出el-dialog时,会发现弹出框弹出时,页面会抖动,滚动条被遮罩层覆盖直接没有滚动条了,导致页面缩小了几个像素点(滚动条的宽度);体验感不好,会影响到页面的布局,且页面有的fixed定位的内容也会随着遮罩层的出现移动几个像素点; 后来我找了一下页面具体样

    2024年02月14日
    浏览(59)
  • 解决:Android 设置 Activity 透明和页面开闭时闪烁

    我们有的时候需要添加一个透明的 Activity,在上面做一些操作,但往往会有一些问题,要么不能完全透明,要么打开和关闭时存在短暂的闪烁,会影响用户体验。我在网上搜索了一些答案,亲试很发现大多是存在问题的。最后经过一系列尝试后终于实现用户无感知透明了。

    2024年02月10日
    浏览(37)
  • 小程序页面顶部标题栏、导航栏navigationBar如何隐藏、变透明?

    \\\"navigationStyle\\\": \\\"custom\\\" 小程序顶部的白色背景条就不见了,直接变透明,只剩下右上角的胶囊按钮  如果页面有 web-view src=\\\"{{src}}\\\" / 这个元素,顶部标题栏背景色依旧会出现哟~~ 扩展阅读 uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法_uniapp顶部状态栏_你

    2024年02月13日
    浏览(47)
  • 【OpenCV】图像上绘制文字cv2.putText()函数用法,添加倾斜透明水印

    在OpenCV中,调用cv2.putText()函数可添加文字到指定位置,对于需要在图片中加入文字的场景提供了一种比较直接方便的方式。 注意:OpenCV 不支持显示中文字符,使用 cv2.putText() 时添加的文本字符串不能包含中文字符(包括中文标点符号) 其函数原型如下所示: 上述参数分别

    2024年02月04日
    浏览(63)
  • vue前端页面弹出红色报错遮罩层 Uncaught runtime errors:at handleError (webpack-internal:///./node_modules/webpack

    报错信息: 原因: 当出现编译错误或警告时,在浏览器中显示全屏覆盖。 解决方法: 在vue.config.js中添加如下配置, 重启项目 即可 https://webpack.docschina.org/configuration/dev-server/#overlay

    2024年02月05日
    浏览(67)
  • Flutter中添加资源文件

    在Flutter中,需要在根目录下的 pubspec.yaml 文件中配置资源的路径,资源才能被打包使用。 1.1 添加本地图片资源 注意缩进!本地文件夹内的资源可以选择导入整个文件夹,或者只导入指定文。 使用: Image.asset(\\\"assets/images/mine.png\\\") 1.2 添加依赖插件图片资源 1. 添加依赖插件 在

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包