第一百六十二回 PopupMenuButton组件

news2025/1/12 6:07:17

文章目录

  • 概念介绍
  • 使用方法
  • 示例代码

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

概念介绍

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

使用方法

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

  • icon属性:主要用来控制按钮的图标,默认是三个白色的圆点;
  • color属性:主要用来控制弹出菜单的背景颜色,默认是白色;
  • shape属性:主要用来控制菜单的形状,默认是矩形;
  • onOpened属性:该属性是方法类型,菜单弹出时回调;
  • onCanceled属性:该属性是方法类型,菜单关闭时回调;
  • onSelected属性:该属性是方法类型,选择某个菜单项时回调该方法;
  • itemBuilder属性:该属性用来存放菜单中的选项,可以存放多个菜单选项;

这些属性中,我们重点介绍一下itemBuilder属性,我们需要使用PopupMenuItem或者CheckedPopupMenuItem组件给它赋值。这两个组件中都包含两个常用属性,

  • child属性:用来控制菜单选项的显示内容,通常使用Text组件或者Icon组件给它赋值;
  • value属性:用来控制菜单选项的值,onSelected属性对应的方法中会把这个值传递给方法的参数;

介绍完这些属性后,我们将在后面的小节中通过示例代码来演示它们的具体用法。

示例代码

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1058414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于蜉蝣优化的BP神经网络(分类应用) - 附代码

基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果&#xff1a;5.M…

【算法训练-二分查找 一】二分查找、在排序数组中查找元素的第一个和最后一个位置

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是螺旋矩阵&#xff0c;使用【二维数组】这个基本的数据结构来实现 二分查找【EASY】 从最简单的二分查找入手&#xff0c;进而开始解决一系列其变体…

网络摄像头(IPC)介绍:类型、供电、镜头、夜视等

IPC&#xff08;Internet Protocol Camera&#xff0c;网络摄像头&#xff09;&#xff0c;它是一种由传统摄像机与网络技术结合所产生的新一代摄像机。它可以将视频、音频、报警及控制信号通过网络传输&#xff0c;接受网络监控主机&#xff08;NVR或监控管理平台&#xff09;…

GitHub与GitHubDesktop的使用

1、介绍 见天来学习使用GitHub与GitHubDesktop。 学习前先来介绍一下什么是GitHub。 GitHub是一个基于Git的代码托管平台和开发者社区。它提供了一个Web界面&#xff0c;让开发者能够轻松地托管、共享和管理他们的软件项目。 在GitHub上&#xff0c;开发者可以创建自己的代…

对图像中边、线、点的检测(支持平面/鱼眼/球面相机)附源码

前言 图像的线段检测是计算机视觉和遥感技术中的一个基本问题,可广泛应用于三维重建和 SLAM 。虽然许多先进方法在线段检测方面表现出了良好的性能,但对未去畸变原始图像的线 段检测仍然是一个具有挑战性的问题。此外,对于畸变和无畸变的图像都缺乏统一的…

淘宝天猫粉丝福利购店铺优惠券去哪里找到领取网站?

淘宝天猫优惠券去哪里找到领取网站&#xff1f; 领取淘宝天猫粉丝福利购优惠券可通过百度搜索&#xff1a;草柴&#xff0c;进入草柴官方网站 或 手机应用商店搜索&#xff1a;草柴&#xff0c;下载安装草柴APP&#xff0c;就可以领取淘宝天猫优惠券&#xff1b; 草柴APP如何领…

【Redis】基础数据结构-简单动态字符串SDS

C语言字符串 char *str "redis"; // 可以不显式的添加\0&#xff0c;由编译器添加 char *str "redis\0"; // 也可以添加\0代表字符串结束C语言中使用char*字符数组表示字符串&#xff0c;‘\0’来标记一个字符串的结束&#xff0c;不过在使用的过程中我…

Android 进阶——系统启动之BootLoader 及内核启动一(下)

文章大纲 引言一、Android 系统启动流程概述1、手机电源被打开时&#xff0c;首先是引导进入BootLoader分区2、BootLoader分区加载Linux 内核3、内核解析执行init.rc脚本并启动进程id为1 的init进程4、init进程初始化各种Android系统服务、ServiceManager以及Zygote 进程孵化器…

C++算法 —— 动态规划(7)两个数组的dp

文章目录 1、动规思路简介2、最长公共子序列3、不相交的线4、不同的子序列5、通配符匹配6、正则表达式匹配7、交错字符串8、两个字符串的最小ASCII删除和9、最长重复子数组 每一种算法都最好看完第一篇再去找要看的博客&#xff0c;因为这样会帮你梳理好思路&#xff0c;看接下…

vued中图片路径与主机路径相关联,例如img:‘http://127.0.0.1:8000/media/data/els.jpg‘

1.在Django项目的settings.py文件中&#xff0c;确保已指定正确的MEDIA_URL和MEDIA_ROOT。MEDIA_URL定义了图片的URL前缀&#xff0c;MEDIA_ROOT定义了本地文件系统中存储图片的路径。 2.在 Django 项目的主 urls.py 文件中&#xff0c;确保包含了适当的 URL 配置&#xff0c;以…

计算机毕业设计 基于SpringBoot的图书馆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

java学生管理系统

一、项目概述 本学生管理系统旨在提供一个方便的界面&#xff0c;用于学校或机构管理学生信息&#xff0c;包括学生基本信息、课程成绩等。 二、系统架构 系统采用经典的三层架构&#xff0c;包括前端使用JavaSwing&#xff0c;后端采用Java Servlet&#xff0c;数据库使用M…

【AI视野·今日Sound 声学论文速览 第十七期】Tue, 3 Oct 2023

AI视野今日CS.Sound 声学论文速览 Tue, 3 Oct 2023 Totally 15 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers DiffAR: Denoising Diffusion Autoregressive Model for Raw Speech Waveform Generation Authors Roi Benita, Michael Elad, Joseph Kes…

【简单的留言墙】HTML+CSS+JavaScript

目标&#xff1a;做一个简单的留言墙 1.首先我们用HTML的一些标签&#xff0c;初步构造区域 样式。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>留言墙</title><style>/* ...... */ …

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

以下是 30 道大学生 Java 面试常见编程面试题和答案&#xff0c;包含完整代码&#xff1a; 什么是 Java 中的 main 方法&#xff1f; 答&#xff1a;main 方法是 Java 程序的入口点。它是一个特殊的方法&#xff0c;不需要被声明。当 Java 运行时系统执行一个 Java 程序时&…

C++ 程序员入门之路——旅程的起点与挑战

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Java中过滤器和拦截器的区别、作用、使用场景

在Java中&#xff0c;过滤器&#xff08;Filters&#xff09;和拦截器&#xff08;Interceptors&#xff09;都是用于在应用程序中实现请求和响应处理逻辑的关键组件&#xff0c;但它们在功能、作用和使用场景上有一些区别。以下是它们的详细解释&#xff1a; 过滤器&#xff…

通过ElementUi在Vue搭建的项目中实现CRUD

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏…

Java的一些常见类【万字介绍】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;输入输出Scanner类输出输出…

【AI视野·今日NLP 自然语言处理论文速览 第四十六期】Tue, 3 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 3 Oct 2023 (showing first 100 of 110 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Its MBR All the Way Down: Modern Generation Techniques Through the …