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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cyclictest 交叉编译与使用

目录 使用版本问题编译 numactl编译 cyclictest使用参考 cyclictest 主要是用于测试系统延时&#xff0c;进而判断系统的实时性 使用版本 rt-tests-2.6.tar.gz numactl v2.0.16 问题 编译时&#xff0c;需要先编译 numactl &#xff0c;不然会有以下报错&#xff1a; arm-…

C++11——initializer_list

initializer_list的简介 initializer_list是C11新出的一个类型&#xff0c;正如类型的简介所说&#xff0c;initializer_list一般用于作为构造函数的参数&#xff0c;来让我们更方便赋值 但是光看这些&#xff0c;我们还是不知道initializer_list到底是个什么类型&#xff0c;…

链表数组插入排序

InsertSort 插入排序算法&#xff0c;比如打扑克牌的算法时&#xff0c;按照从左到右&#xff0c;找到对应的位置插入排序 最重要的是位置移动 找到对应位置值 #include "iostream" #include "bits/stdc.h"using namespace std;void sort(vector<in…

el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并,并且不能跨品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

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

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

【算法通关村】链表基础经典问题解析

【算法通关村】链表基础&经典问题解析 一.什么是链表 链表是一种通过指针将多个节点串联在一起的线性结构&#xff0c;每一个节点&#xff08;结点&#xff09;都由两部分组成&#xff0c;一个是数据域&#xff08;用来存储数据&#xff09;&#xff0c;一个是指针域&…

【Linux】TCP套接字编程

目录 前言 UDP服务器的完善 线程的封装 结构定义 接口实现 环形队列 结构定义 接口实现 加锁 信号量的申请与释放 入队与出队 整体组装 初始化与析构 信息接收线程 消息发送线程 TCP套接字 创建套接字 listen accept 收发操作 客户端的编写 进一步完善 …

C语言中的格式化输出符号:%d %c %p %x等

文章目录 概览%d%c%d和%c的区别%p%x %X输出浮点数参考 概览 C语言中的格式化输出符号有很多&#xff0c;以下是一些常见的&#xff1a; %d 或 %i&#xff1a;用于输出十进制整数。 %u&#xff1a;用于输出无符号十进制整数。 %f&#xff1a;用于输出浮点数。 %s&#xff1a;用…

酷开科技 | 酷开系统,让家庭娱乐方式焕然一新!

在这个快节奏的社会&#xff0c;家庭娱乐已成为我们日常生活中不可或缺的一部分&#xff0c;为了给家庭带来更多欢笑与感动&#xff0c;酷开科技发力研发出拥有丰富内容和技术的智能电视操作系统——酷开系统&#xff0c;它集合了电影、电视剧、综艺、游戏、音乐等海量内容&…

基于SpringBoot的企业客户管理系统的设计与实现

摘 要 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述企业客户管理系统的当前背景以及系统开发的目…

Spinnaker 基于 docker registry 触发部署

docker registry 触发部署 Spinnaker可以通过Docker镜像的变化来触发部署&#xff0c;这种方法允许你在Docker镜像发生变化时自动启动新的部署流程。 示例原理如下图所示&#xff1a; 以下是如何在Spinnaker中实现基于Docker Registry触发部署的配置流程。最终实现的效果如下…

JavaScript 的初步学习下篇

函数 语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) {函数体return 返回值; }函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 注: 函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次. js 中…

Windows11系统下MemoryCompression导致内存占用率过高

. # &#x1f4d1;前言 本文主要是win11系统下CPU占用率过高如何下降的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

如何在财税行业查找批量客户?

现在市场上代记账公司也不算少&#xff0c;做过这行的都知道&#xff0c;最初呢行业竞争不强&#xff0c;都是靠地推、老客户转介绍&#xff0c;或者长期以往的蹲守各个地区的工商注册服务中心&#xff0c;找那些才注册企业的老板或者创业者。但是&#xff0c;随着市场经济的发…

iceoryx(冰羚)-publisher注册RouDi进程

1、发UserApp启动&#xff0c;发布REG消息过程 2、初始化状态转换 3、pub->RouDi 4、sub->RouDi 5、IPC通信 IPC通信支持socket和管道&#xff0c;IpcInterfaceUser ->RouDi进程的socket&#xff0c; IpcInterfaceCreator接收RouDi进程的消息socket。 optional<…

结构体||联合体

1.结构体 1.1实际生活中一些东西往往有多个元素组成。如一名学生有身高、体重、名字、学号等。这时候就需要用到结构体。 结构体是一些值的结合&#xff0c;这些值被称为成员变量。结构体的每个成员可以是不同类型的变量&#xff0c;如&#xff1a;标量、数组、指针、甚至是其…

基于SSM的网上书城

简介 本系统主要分为前台和后台&#xff0c;前台网页主要是面向用户的&#xff0c;用户注册登录后网上书城可以进行下单购买图书&#xff0c;主要功能有图书基本信息的查询、用户登录和注册、图书搜索、添加购物车、购买、订单查询等功能&#xff0c;后台是管理员进入的&#x…

Python基础学习快速入门

文章目录 Number变量String字符串Def函数Class类List列表Tuple元组Dictionary字典Set集合值与引用类型if条件控制Loop循环 Number变量 python直接赋值&#xff0c;不需要定义变量类型。不需要**,逗号结尾符 使用print**直接进行输出 #赋值 a 1.0 print(a)a 7 print(a)p…

Selenium 学习(0.17)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(条件覆盖和条件判定覆盖)

条件覆盖 设计测试用例&#xff0c;使每个判断中每个条件的可能取值至少满足一次。 条件判定覆盖 通过设计足够的测试用例&#xff0c;满足如下条件&#xff1a; 所有条件的可能至少执行一次的取值 所有判断的可能结果至少执行一次 条件判定覆盖同时满足判定覆…

12.1平衡树(splay),旋转操作及代码

平衡树 变量定义 tot表示结点数量&#xff0c;rt表示根的编号 v[i]表示结点i的权值 fa[i]表示结点i的父亲节点 chi[i][2]表示结点i的左右孩子 cnt[i]表示结点i的权值存在数量&#xff0c;如1123&#xff0c;v[3]1&#xff0c;则cnt[3]2;就是说i3的三号结点的权值为1&…