首页 > 其他分享 >PopupMenuButton组件的用法

PopupMenuButton组件的用法

时间:2024-07-09 22:26:12浏览次数:11  
标签:菜单 value 用法 debugPrint PopupMenuButton 组件 属性

文章目录


我们在上一章回中介绍了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组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

标签:菜单,value,用法,debugPrint,PopupMenuButton,组件,属性
From: https://blog.csdn.net/talk_8/article/details/140308135

相关文章

  • 【Python_GUI】tkinter常用组件——文本类组件
    文本时窗口中必不可少的一部分,tkinter模块中,有3种常用的文本类组件,通过这3种组件,可以在窗口中显示以及输入单行文本、多行文本、图片等。Label标签组件Label组件的基本使用Label组件是窗口中比较常用的组件,通常用于添加文字或图片,还可以定义Label组件中文字和图片的排列方式......
  • Nuxt框架中内置组件详解及使用指南(四)
    title:Nuxt框架中内置组件详解及使用指南(四)date:2024/7/9updated:2024/7/9author:cmdragonexcerpt:摘要:本文详细介绍了Nuxt3框架中的两个内置组件:和的使用方法与示例。用于捕获并处理客户端错误,提供了错误处理和自定义错误展示的功能;而是一个实验性组件,用于渲染无客......
  • Go 中空结构体的用法,我帮你总结全了!
    Go中空结构体的用法,我帮你总结全了!原创 江湖十年 Go编程世界 2024年06月05日07:51 浙江 4人听过在Go语言中,空结构体 struct{} 是一个非常特殊的类型,它不包含任何字段并且不占用任何内存空间。虽然听起来似乎没什么用,但空结构体在Go编程中实际上有着广泛的应......
  • 【yarn】安装与配置——(秒懂yarn安装用法)
    yarn安装与配置技术文档1.yarn的安装1.1使用npm安装Yarn1.2使用安装脚本1.3通过Homebrew安装(macOS)1.4通过Chocolatey安装(Windows)1.5通过安装包管理器(Linux)2.配置Yarn2.1配置镜像源2.2配置缓存目录2.3查看配置3.初始化项目4.常用命令4.......
  • 【Shell】sed xargs grep awk的组合用法
    一、批量删除指定字符串"slave-xxx":grep-inr"slave-xxx"|awk-F':''{print$1}'|xargs-n1-I{}sed-i'/slave-xxx/d'{}二、批量替换指定字符串"slave-xxx":grep-inr"slave-abc"|awk-F':'......
  • Sliver组件使用示例
    文章目录1.概念介绍2.使用方法3.示例代码我们在上一章回中介绍了SliverPadding组件相关的内容,本章回中将介绍Sliver综合示例.闲话休提,让我们一起TalkFlutter吧。1.概念介绍我们在前面的章回中介绍了各种Sliver相关的组件:SliverList,SliverGrid,SliverAppBar......
  • 谷粒商城学习笔记-2-分布式组件-SpringCloud Alibaba-Nacos注册中心
    文章目录一,Nacos简介1,简介2,Nacos原理剖析二,Nacos服务端安装1,下载nacos-server2,解压启动nacos-server3,验证三,服务注册步骤1,引用Nacas客户端的Jar包2,服务启动类增加注解3,配置Nacos服务器地址四,验证错误记录一,Nacos简介1,简介Nacos是阿里巴巴开源的一个更易于构建云......
  • conda pip pip3 安装包的一些常见用法
    查看当前conda配置condaconfig--showchannels安装延时操作pip3--default-timeout=100installd2l-0.17.6-py3-none-any.whl指定镜像源操作pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpled2l-0.17.6-py3-none-any.whl删除所有源,换回默认condaconfig--rem......
  • C++ string基础用法
    基本操作构造与初始化默认构造:创建一个空字符串 std::strings;从C风格字符串构造:std::strings="Hello";从范围构造:std::strings(begin,end);从迭代器构造:std::strings(it_begin,it_end);从字符数组构造:std::strings(arr,arr+size);从重复字符构造:std::stri......
  • Nuxt框架中内置组件详解及使用指南(三)
    title:Nuxt框架中内置组件详解及使用指南(三)date:2024/7/8updated:2024/7/8author:cmdragonexcerpt:摘要:“Nuxt3框架中与组件的深度使用教程,包括如何使用这两个组件进行页面导航和加载指示的自定义配置与实战示例。”categories:前端开发tags:Nuxt3组件NuxtL......