第一百二十八回 ModalBarrier Widget

本文介绍了Flutter中的ModalBarrier组件,它用于作为页面蒙板,覆盖整个屏幕。文章详细讲解了组件的用法,包括color和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"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值