首页 > 其他分享 >创建一个蒙板页面

创建一个蒙板页面

时间:2024-06-06 23:00:23浏览次数:20  
标签:关闭 创建 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/139511680

相关文章

  • IntelliJ IDEA配置创建文件后自动生成注释字段,包括作者、日期和描述等信息。
    效果新建文件自动生成如下文档注释配置如下:打开setting进行如下操作粘贴的模板内容如下:/***@authordeveloper_ZhangXinHua*@date${YEAR}/${MONTH}/${DAY}*@desc${DESCRIPTION}*/......
  • LVGL(二)切换页面,同时清理内存,异常总结之动画删除
    项目场景:LVGL切换页面时,出现异常问题的总结。这里假设有2个页面,一个页面是启动页面,一个是密码盘页面。都有几十个部件,包含样式,动画,事件等。使用squareline生成代码。两个页面中都有一个按钮可以互相切换到另外一个页面。作者已经运行测试过了,切换页面,同时清除内存,再也没有......
  • Day19 待办事项功能页面完善以及显示优化
    本章节完善了待办事项增删改查功能,及优化打开待办事项页面时,如果无数据则显示默认的背景图片,否则显示数据等细节优化 由于待办事项功能页,数据已正常渲染出来了。但页面新增,查询,修改,删除等功能还未实现。接下来实现待办事项的请求WebApi接口实现CURD(增删改查)的功能......
  • 使用AppJail配置网络并创建tiny jail(未成功)
    创建tinyjail成功了,但是网络配置这块,jail里只能ping通外面,而无法pkg更新软件。本文章是这篇文章Jail管理器AppJail的使用@FreeBSD-CSDN博客的网络篇。首先host主机配置pf防火墙参考这里:PacketFilter-AppJailHandbook 在/etc/rc.conf文件中添加pf_enable="YES"pflog_......
  • HC32F4A0PITB创建工程模板
    使用芯片第一步网上搜索如何创建工程模板,如何下载和查看资料!!!本教程使用的开发板是【立创·天空星HC32F4A0PITB开发板】网址:https://lckfb.com/project/detail/lckfb-lspi-skystar-hc32f4a0pitb-lite?param=baseInfo开源原理图和PCB,资料免费!!!!感谢立创开发板团队的开源!!一、......
  • LocalStorage页面级UI状态存储、将LocalStorage实例从UIAbility共享到一个或多个视图
    参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-localstorage-0000001524537149-V2#section13961833151713此处代码只精简了需要的importwindowfrom'@ohos.window';exportdefaultclassEntryAbilityextendsUIAbility{//共享LocalSto......
  • 不会你打我!使用AI绘画Stable Diffusion或Midjourney创建你的专属表情包!附完整详细教程
    相信大家对微信表情包一定非常熟悉了,可能每天都在使用别人的表情包。那么有没有想过制作自己的专属表情包呢?那您可能觉得我又不会设计,怎么制作呢?没关系,虽然不会设计,但是我们可以简单地使用一些AI辅助。不是也上架了自己制作的表情包~今天将自己通过AI制作上架微信表情包的......
  • 创建属性property时,不用官方的 default 说明符;
    创建属性property时,不用官方的default说明符;首先看个案例TPerson=classpublishedpropertyAge:IntegerreadFAgewriteSetAgedefault20;end;我们创建一个TPerson类给其一个属性,然后使用了default20关键字,按照我们的理解应该是这个age属性的默认值就......
  • 在 Powershell 管道中创建新对象
    我希望将某些文件递归复制到目标目录,但保持相同的文件夹结构。我希望能够执行以下操作:gci-Recurse-File*.csproj|rvpa-Relative|select{@{src=$_;dst=[System.IO.Path]::GetDirectoryName($baseDir+$_)}}}|%{mkdir$_.dst&&cp$_.src$_.dst}......
  • C# .NET 6 使用WorkFlow Core 创建工作审批流
    1,背景工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更......