显示弹出式窗口的方法


我们在上一章回中介绍了Sliver综合示例相关的内容,本章回中将介绍PopupMenuButton组件.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧,通常显示三个圆点图标,点击该图标时弹出的菜单就是PopupMenuButton,点击菜单中的选项后菜
单自动关闭。如果有看官不理解的话可以查看下面的程序运行效果图。本章回中将详细介绍PopupMenuButton的使用方法。011popMenu.gif

2. 使用方法

和其它组件一样PopupMenuButton组件提供了相关的属性,通过这些属性可以控制该组件,下面是该组件中常用的属性:

  • icon属性:主要用来控制按钮的图标,默认是三个白色的圆点;
  • color属性:主要用来控制弹出菜单的背景颜色,默认是白色;
  • shape属性:主要用来控制菜单的形状,默认是矩形;
  • onOpened属性:该属性是方法类型,菜单弹出时回调;
  • onCanceled属性:该属性是方法类型,菜单关闭时回调;
  • onSelected属性:该属性是方法类型,选择某个菜单项时回调该方法;
  • itemBuilder属性:该属性用来存放菜单中的选项,可以存放多个菜单选项;
    这些属性中,我们重点介绍一下itemBuilder属性,我们需要使用PopupMenuItem或者CheckedPopupMenuItem组件给它赋值。这两个组件中都包含两个常用属性,
  • child属性:用来控制菜单选项的显示内容,通常使用Text组件或者Icon组件给它赋值;
  • value属性:用来控制菜单选项的值,onSelected属性对应的方法中会把这个值传递给方法的参数;
    介绍完这些属性后,我们将在后面的小节中通过示例代码来演示它们的具体用法。

3. 示例代码

actions: [
  ///这个组件自带三个点的icon,不需要单独添加,可以通过icon属性修改
  PopupMenuButton(
    // icon: Icon(Icons.ac_unit),
    ///弹出菜单的背景颜色,不过会把icon的颜色也修改了
    // color: Colors.grey,
    ///控制菜单的形状,修改为圆角
    shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(16),
    ),
    ///控制菜单弹出位置over就在appBar上,under在AppBar下方,默认值是over
    position:PopupMenuPosition.over,
    ///控制菜单的偏移位置,正值向右和下偏移,负值向左和上偏移
    offset: const Offset(-16,0),

    ///选择菜单的某个item后的回调方法,这个value和item中的value属性一致,如果item中
    ///没有给value属性赋值,那么该方法不会被回调
    onSelected: (value){ debugPrint('selected: $value');},
    ///meun打开和关闭时的回调方法
    onOpened: () => debugPrint('open'),
    onCanceled: () {debugPrint('cancel');},
    ///菜单的初始值,与该值相等的item会被标记为选中状态
    initialValue: 'two',

    ///创建菜单项
    itemBuilder: (context) {
      // return <PopupMenuItem<String>>[
      return [
        ///建议指定value属性
        PopupMenuItem<String>(
          value: 'one',
          onTap: ()=> debugPrint('tap one'),
          child: const Text('1'),
        ),
        PopupMenuItem<String>(
          value:'two',
          onTap: ()=> debugPrint('tap two'),
          child: const Text('2'),
        ),
        PopupMenuItem<String>(
          value:'three',
          onTap: ()=> debugPrint('tap three'),
          child: const Text('3'),
        ),
        ///另外一种菜单项目,它可以被选择,通过checked控制,默认值为false,设置为true时显示对号;
        const CheckedPopupMenuItem<String>(
          value: 'four',
          checked:true,
          child: Text('4'),
        ),
      ];
    },
  ),
],

在上面的示例代码中,我们添加了四个菜单项目,前三个菜单项都相同,最后一个菜单项带一个对号,表示被选择。此外,PopupMenuButton组件需要放到AppBar组件的actions属性中,这个在代码中可以看到。

看官们,与"PopupMenuButton组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现Ajax的弹出式窗口,可以使用一些流行的JavaScript库,比如jQuery,Bootstrap等。以下是一个简单的实现方式: 1. 在HTML页面中添加一个按钮或链接,用于触发弹出式窗口显示。 2. 在JavaScript代码中,使用jQuery或其他库的Ajax方法来获取需要在弹出式窗口显示的内容。 3. 在获取到内容后,将其插入到弹出式窗口的HTML代码中。 4. 显示弹出式窗口,并将内容显示在其中。 下面是一个示例代码,使用了Bootstrap框架和jQuery库来实现弹出式窗口: ```html <!-- 弹出式窗口的 HTML 代码 --> <div class="modal fade" id="myModal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">弹出式窗口标题</h4> </div> <div class="modal-body"> <p>弹出式窗口内容将在此处显示。</p> </div> </div> </div> </div> <!-- 触发弹出式窗口的按钮或链接 --> <a href="#" id="myBtn">显示弹出式窗口</a> <!-- JavaScript 代码 --> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <script> $(document).ready(function(){ $("#myBtn").click(function(){ $.ajax({ url: "ajax_content.html", // 获取要显示的内容的URL success: function(result){ $("#myModal .modal-body").html(result); // 将内容插入到弹出式窗口中 $("#myModal").modal(); // 显示弹出式窗口 } }); }); }); </script> ``` 在上面的示例代码中,当用户点击“显示弹出式窗口”的链接时,会通过Ajax方法获取一个名为“ajax_content.html”的文件中的内容,并将其插入到弹出式窗口的HTML代码中。然后,使用Bootstrap框架中的“modal”方法显示弹出式窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

talk_8

真诚赞赏,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值