第一百八十七回 DropdownButton组件

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 DropdownButton
    • 2.2 DropdownMenuItem
  • 3. 示例代码
  • 4. 内容总结
  • 5. 经验分享

我们在 上一章回中介绍了"DropdownMenu组件"相关的内容,本章回中将介绍 DropdownButton组件.闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在本章回中介绍的DropdownButton组件和上一章回中介绍的DropdownMenu组件类似,主要用来实现下拉菜单,不过该组件在外观上像一个带图标的按钮,点击按钮后会弹出下拉菜单,下面是该组件的外观效果图。本章回中将详细介绍该组件的使用方法。

在这里插入图片描述

2. 使用方法

下拉菜单通过DropdownButton组件和DropdownMenuItem组件一起配合实现,DropdownButton组件主要控制菜单的图标和响应点击事件,DropdownMenuItem组件主要控制菜单中显示的内容。接下来我们分别介绍这两种组件的用法。

2.1 DropdownButton

该组件提供了相关的属性来控制下拉菜单的图标和功能,下面是常用的属性:

  • value属性:主要用来控制按钮上显示的内容,该内容也是下拉菜单中被选择的内容;
  • dropdownColor属性:主要用来控制下拉菜单的背景颜色;
  • style属性:主要用来控制下拉菜单中文字的颜色,value属性中的颜色也受该属性控制;
  • icon属性:主要用来控制按钮上显示的图标;
  • iconSize属性:主要用来控制按钮上图标的大小;
  • items属性:主要用来控制下拉菜单中的内容,它是一个List,可以存放多个内容;
  • onChanged属性:主要用来响应按钮的点击事件,它是方法类型,点击按钮时回调此属性对应的方法;

上面介绍的这些属性中几乎都会用到,此外该组件还提供了其它的属性,大家可以参考官方文档的介绍;

我们重点介绍一下items属性,它的类型是DropdownMenuItem,而且是List类型,也就是说它可以存放多个菜单项。

此外,style属性是TextStyle类型,开始我以为该属性可以控制按钮的外观风格,使用后才发现它只能控制按钮上显示文字的风格。那么如何修改按钮的外观风格?没有办法修改,至少我没有找到修改的方法,这也算是该组件的缺点吧。

2.2 DropdownMenuItem

该组件提供了相关的属性来控制菜单项的相关内容与风格,下面是常用的属性:

  • vlaue属性:类似map中的key,它不会显示在菜单中,主要用来识别某个菜单项;
  • child属性:主要用来控制菜单项中显示的内容,可以是文本或者图片;

该组件还提供了其它的属性,主要用来修改菜单项的风格,比较颜色等。我们在这里就不详细介绍了,我重点说一下value属性,它和DropdownButton中的value属性相同,这两个value属性的值必须保持一致。该属性还会出现在onChanged属性对应的方法参数中,我们可以从参数中获取到当前被选择的菜单项的value。

3. 示例代码

List<DropdownMenuItem<String>> itemList = [
  ///value和onChanged中的value一致,child是菜单项中显示的内容
  const DropdownMenuItem(value: "one",child:Text("niceDay"), ),
  const DropdownMenuItem(value: "two",child: Text("today"),),
  const DropdownMenuItem(value: "three",child: Text("yesterday"),),
];

String itemSelectedValue = "two";

DropdownButton(
  ///这个显示的是被选择菜单项的值,它的类型与DropdownMenuItem中的泛型一致
  value: itemSelectedValue,
  ///下拉菜单的背景颜色
  dropdownColor: Colors.yellow,
  ///下拉菜单中文字的颜色
  style: const TextStyle(color: Colors.blue),
  iconSize: 32,
  icon: const Icon(Icons.schedule),
  items: itemList,
  onChanged: (value){
    debugPrint("it is : $value");
    setState(() {
      itemSelectedValue = value.toString();
    });
  },
),

上面的示例代码演示了DropdownButtonDropdownMenuItem组件的用法,我们创建了一个包含三个菜单项的下拉菜单按钮,点击按钮上的图标就会弹出菜单项供我们选择,选择某个菜单项目后菜单消失,同时把被选择的菜单项显示在按钮上面。下面是该程序的运行效果图。

在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 下拉菜单按钮通过DropdownButton和DropdownMenuItem组件一起实现;
  • DropdownButton组件主要控制按钮显示的内容和响应点击按钮事件;
  • DropdownMenuItem组件主要控制菜单项的内容和风格;
  • DropdownButton和DropdownMenuItem组件都提供了相关的属性来控制下拉菜单;

5. 经验分享

我们通过四种不同的组件实现了下拉菜单功能,我感觉使用DropdownMenu组件的场景更加多一些,因为它的外观是一个输入框,在输入框中显示被选择菜单的内容,而使用DropdownButton的场景比较少,它的外观是一个带图标的按钮,菜单中被选择的内容显示在按钮上,和普通的按钮十分相似,但是不能修改按钮的外观。大家可以结合自己项目的需求选择不同的组件来实现下拉菜单功能。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot学生宿舍管理系统的设计与开发

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

javaee实验:MVC 框架技术应用——URL 映射及方法参数的使用

目录 urlmvc框架mvc框架的设计mvc流程 实验目的实验内容实验过程创建项目创建项目结构编写代码简单测试一下 url 和 Hypertext 以及 HTTP 一样&#xff0c;URL 是 Web 中的一个核心概念。它是浏览器用来检索 web 上公布的任何资源的机制 URL 代表着是统一资源定位符&#xff…

OpenCV技术应用(6)— 暖色滤镜和冷色滤镜

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教大家如何将一幅图像转化成暖色滤镜和冷色滤镜&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.暖色滤镜 &#x1f680;3.冷色滤…

每日一练:阿姆斯特朗数

1. 概述 阿姆斯特朗数&#xff08;Armstrong number&#xff09;&#xff0c;也称为自恋数、自幂数&#xff08;narcissistic number&#xff09;、水仙花数&#xff0c;是指一个n位数&#xff08;n≥3&#xff09;&#xff0c;它的每个位上的数字的n次幂之和等于它本身。换句话…

AVFormatContext协议层:理论与实战

文章目录 前言一、协议操作对象结构二、初始化 AVIOContext 函数调用关系三、avio 实战 1&#xff1a;打开本地文件或网络直播流1、示例源码2、运行结果①、解决方法 1②、解决方法 2 四、avio 实战 2&#xff1a;自定义 AVIO1、示例源码2、运行结果 五、avio 实战 3&#xff1…

Vivado版本控制

Vivado版本控制 如果您有幸进入FPGA领域&#xff0c;那么会遇到版本控制问题&#xff0c;本文讲解的是如何用git进行Vivado进行版本控制。 搭建Git环境 一 首先需要一个git环境&#xff0c;并选择一个托管平台&#xff08;github,gitlab,gitee&#xff09; Git下载地址&…

【广州华锐视点】广东3D展厅开发服务找广州华锐视点,打造未来展览新体验!

随着科技的不断发展&#xff0c;人们对于信息获取和传播的方式也在不断创新。传统的实体展览馆在空间、时间、地域等方面存在诸多限制&#xff0c;而3D数字展厅则为我们提供了一个全新的解决方案。广州华锐互动致力于为客户提供专业的3D数字展厅定制开发服务&#xff0c;让您的…

滑动平均窗口的定义,优点,缺点,以及目前的应用!!

文章目录 前言一、滑动平均窗口的优点二、滑动平均窗口的缺点三、滑动平均窗口的应用 前言 滑动平均窗口是一种数据处理方法&#xff0c;它以固定的窗口大小对数据进行移动&#xff0c;并在每个窗口内计算数据的平均值。这种方法主要用于平滑数据&#xff0c;减小数据波动的影…

鸿蒙开发学习笔记

快速入门 配置网络权限 1.打开项目的 module.json5 文件 2.在module 里面写下面代码 3.这样就可以使用网络图片了 4.模拟器上就可以正常显示网络图片了 5.官方文档有相吸说明 6. 华为官方编辑工具使用技巧&#xff08;内置文档&#xff09;&#xff0c;鼠标移动到标签上&…

计算机网络扫盲(1)——因特网

一、概述 因特网是一个世界范围的计算机网络&#xff0c;即它是一个互联了遍及全世界数十亿计算设备的网络。大家对此应该并不陌生&#xff0c;我们身边有着不计其数的计算机设备被接入了因特网&#xff0c;如今计算机网络这个术语似乎已经有点过时了&#xff0c;用因特网的术语…

STM32-GPIO

一、GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下&#xff1a;可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输…

159.库存管理(TOPk问题!)

思路&#xff1a;也是tok的问题&#xff0c;与上篇博客思路一样&#xff0c;只不过是求前k个小的元素&#xff01; 基于快排分块思路的代码如下&#xff1a; class Solution { public:int getkey(vector<int>&nums,int left,int right){int rrand();return nums[r%…

多项式拟合求解

目录 简介 基本原理 例1 例2 例3 参考资料 简介 多项式拟合可以用最小二乘求解&#xff0c;不管是一元高阶函数&#xff0c;还是多元多项式函数&#xff0c;还是二者的混合&#xff0c;都可以通过统一的方法求解。当然除了最小二乘法&#xff0c;还是其他方法可以求解&…

Centos7.9搭建zabbix6.4.0过程及报错注意点

搭建参考此链接即可&#xff1a;https://blog.csdn.net/PerDrix/article/details/129624091 报错整理&#xff1a; 一、zabbix6.0以上版本默认必须安装mysql 8.0.30以上版本数据库&#xff0c;否则服务起不来 二、编译安装zabbix时&#xff0c;必须执行如下操作&#xff0c;…

【STM32】STM32学习笔记-课程简介(1)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

人工智能中的模型评估

1 概述 1.1 定义 人工智能&#xff08;AI&#xff09;模型评估是一个关键的过程&#xff0c;用于确定模型在特定任务上的性能和有效性。这个过程涉及使用各种技术和指标来衡量模型的准确度、可靠性、泛化能力以及其他重要特性。在不同的应用场景中&#xff0c;模型评估的具体…

深入解析JVM内存结构:Metaspace、堆与垃圾收集器

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

Overflow Aware Quantization

Overflow Aware Quantization Framework N o _o o​是 amount of arithmetic overflow 辅助信息 作者未提供代码

前端开发环境与真实环境的接口联通的那些最佳实践

1. 背景 前端开发的产物通常是 app.js 、app.css &#xff0c;然后将这些资源放在真实环境域名下进行工作的。 但前端的开发环境通常是本地的 http://localhost:xxx&#xff0c;业务域名可能是 https://xxx.abc.com&#xff0c;两者不在一个域名下在调用接口或者调试时会非常不…

NacosSync 用户手册

手册目标 理解 NacosSync 组件启动 NacosSync 服务通过一个简单的例子&#xff0c;演示如何将注册到 Zookeeper 的 Dubbo 客户端迁移到 Nacos。 介绍 NacosSync是一个支持多种注册中心的同步组件,基于Spring boot开发框架,数据层采用Spring Data JPA,遵循了标准的JPA访问规范…