首页 > 其他分享 >如何使用ModalBarrier组件

如何使用ModalBarrier组件

时间:2024-06-05 23:30:04浏览次数:9  
标签:ModalBarrier 如何 关闭 组件 属性 onDismiss 页面

文章目录


我们在上一章回中介绍了空类型和空安全相关的内容,本章回中将介绍ModalBarrier组件.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

概念介绍

我们在本章回中介绍的ModalBarrier是一种组件,它主要用来当作蒙板覆盖在页面上方,该组件类似Dialog组件,不过它默认情况会覆盖整个页面,因此需要在它外层
嵌套一个容器来控制它的大小。本章回中将详细介绍该组件的使用方法。

使用方法

和其它组件一样,ModalBarrier组件提供了相关的属性来控制自己,下面是常用的属性:

  • color属性:主要用来控制组件的背景颜色;
  • onDismiss属性:它是方法类型,组件消失时回调此方法;
    这两个属性都是可选属性,color属性的默认值是灰色,onDismiss属性的默认值是关闭当前页面。也就是说我们不需要给该组件赋值就可以拿来直接使用。不过我们还
    是建议给这两个属性赋值,特别是onDismiss属性。因为它默认会关闭组件所在的页面,而不是像Dialog一样只关闭自己,不影响Dialog所在的页面。此外,最好在
    该组件外层嵌套一个容器来控制它的大小,因为它默认覆盖整个页面。我们将在后面的小节中通过示例代码来演示这些内容。

示例代码

 SizedBox(
    width: 400,
    height: 300,
    child: ModalBarrier(
      ///参数onDismiss源代码写的关闭modal窗口
      // onDismiss: () => Navigator.maybePop(context),

      ///自己写的关闭modal窗口,这两种关闭窗口的方法都会退出当前页面
      onDismiss: () => Navigator.of(context).pop(),
      color: Colors.blue,
    ),
  ),
  ///通过变量控制Modal窗口的显示与隐藏,这样只会关闭Modal窗口,而不会退出当前页面
  _showModal
      ? SizedBox(
          width: 300,
          height: 400,
          child: ModalBarrier(
            ///点击窗口外的区域无反应,点击窗口内的区域只关闭当前窗口
            onDismiss: () {
              setState(() {
                _showModal = !_showModal;
              });
            },
            color: Colors.green,
          ),
        )
      : const SizedBox.shrink(),

上面的代码中我们给ModalBarrier组件外层嵌套了一个SizedBox组件,这样可以控制该组件的大小。此外,我们给onDismiss属性赋了两个不同的值: 一个值参考
源代码实现,主要用来关闭当前页面,另外一个值更新组件状态,主要用来关闭该组件而且不影响组件所在的页面。我在这里就不演示程序的运行结果了,建议大家自己动
手实践,体会一下该组件的功能,特别是onDimiss属性对应的方法。
看官们,关于"ModalBarrier Widget"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

标签:ModalBarrier,如何,关闭,组件,属性,onDismiss,页面
From: https://blog.csdn.net/talk_8/article/details/139484361

相关文章

  • uniapp-two-day-two之基础内容and滑动组件和滚动栏
    基础内容又是码农无聊的一天,今天也就上了一节早课,下课想学习的服了结果玩了半天手机,终于是在下午学上了,真的是很难控制自己。闲聊结束。text标签text中有上面这几个属性,其中在我看来selectable是挺重要的一个属性,是吧现在不都说是cv工程师吗?可不就是这个来组成了我们工程师......
  • 如何解决 Docker Compose文件无法拉取:解决运维技术领域的Bug :Failed to pull Docker C
    如何解决DockerCompose文件无法拉取:解决运维技术领域的Bug:FailedtopullDockerComposeYAMLfilefromGitHubrepository原创作者:猫头虎作者微信号:Libin9iOak作者公众号:猫头虎技术团队更新日期:2024年6月6日博主猫头虎的技术世界......
  • cmake的add_custom_command如何处理多输出+多依赖
    intro在一个复杂的项目中,免不了需要动态生成文件,此时可能就需要用到cmake的add_custom_command命令,这个命令可以生成cmake识别的输出文件,并作为构建过程中其它命令的依赖和输出。add_custom_command(OUTPUToutput1[output2...]COMMANDcommand1[ARGS][args1...][COMMAND......
  • .NET C# 程序自动更新组件
    .NETC#程序自动更新组件合集-临散组件封装分享(1) 1..NETC#程序自动更新组件06-05收起 引言本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,......
  • 第五篇——信息编码:数字和文字是如何诞生的?
    目录一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么?四、总结五、升华一、背景介绍数字和文字的诞生过程,信息在其中起到了什么作用?我想通过这一篇的学习和思考让我更加......
  • IDEA如何把MAVEN项目打包成jar包并且用命令行启动
    首先在pom文件里引入插件<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><configura......
  • 如何批量复制文件名?文件名批量提取的5个工具!(2024新)
    在数字化时代,我们经常需要处理大量的文件,其中批量复制文件名或批量提取文件名成为一项常见的任务。这不仅可以提高我们的工作效率,还能使文件管理更为有序。本文将介绍五种2024年最新的文件名批量提取工具,帮助你轻松完成文件名批量复制和提取的任务。文件名批量提取复制方法一......
  • JavaScript第十讲:DOM编程(1):节点概念,如何获取元素节点,节点属性,样式
    前言在当今的Web开发中,DOM(DocumentObjectModel)编程扮演着至关重要的角色。DOM是HTML和XML文档的编程接口,它使得我们可以像操作对象一样来操作网页上的元素。无论是构建动态网页,还是实现用户交互,都离不开对DOM的深入理解和灵活运用。在本文中,我们将开启DOM编程的系列学习之旅......
  • 赢销侠的秘密武器:如何通过创新思维提升业绩
    在当今这个变化莫测的市场环境中,传统的销售策略已难以满足企业的发展需求。面对激烈的市场竞争和消费者需求的多样化,赢销侠们需要掌握一种新的秘密武器——创新思维。这种思维方式能够帮助他们打破常规,找到新的解决方案,从而提升业绩。那么,如何通过创新思维提升业绩呢?本文将为你......
  • springBoot容器中注册组件
    1.@Bean用于配置对象让spring来创建的。默认情况下它调用的是类中的无参构造函数。如果没有无参构造函数则不能创建功。1.1.属性id:给对象在容器中提供一个唯一标识。用于获取对象。class:指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。init-metho......