第二百七十七回

2024-01-21 04:12
文章标签 七十七 第二百

本文主要是介绍第二百七十七回,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

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

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

1. 概念介绍

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

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();});},
),

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

4. 内容总结

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

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

5. 经验分享

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

这篇关于第二百七十七回的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628338

相关文章

计算机的错误计算(七十七)

摘要  探讨反余弦函数 acos(x) 的错误计算。 例1.  计算 acos(0.999999999999) .         若用Java中函数计算: import java.lang.Math;public class Acos{public static void main(String[] args) {double x = 0.999999999999;double resu

第二百零九节 Java格式 - Java数字格式类

Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance()方法返回格式化

第二百零四节 Java正则表达式教程 - Java正则表达式量词

Java正则表达式教程 - Java正则表达式量词 我们可以指定正则表达式中的字符的次数可以匹配字符序列。 为了使用正则表达式表达一个数字或更多的模式,我们可以使用量词。 下表列出了量词及其含义。 量词含义*零次或更多次+一次或多次?一次或根本不{m}正好m次{m,}至少m次{m,n}至少m,但不超过n次 量词必须遵循字符或字符类。 例子 import java.util.reg

每天一个数据分析题(三百七十七)- 时间序列

时间序列分析可以根据历史数据对未来进行预测,以下哪个是常见的时间序列算法模型() A. RSI B. MACD C. ARMA D. KNN 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案

Android14音频进阶之CarAudioManager::getOutputDeviceForUsage流程分析(七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行

Spring Boot(七十七):SpringBoot实现接口内容协商功能

1 什么是内容协商 简单说就是服务提供方根据客户端所支持的格式来返回对应的报文,在 Spring 中,REST API 基本上都是以 json 格式进行返回,而如果需要一个接口即支持 json,又支持其他格式,开发和维护多套代码显然是不合理的,而 Spring 又恰好提供了该功能,那便是ContentNegotiation 在 Spring 中,决定一个数据是以 jso还是xml 分别如下:

C语言试题七十七之请编写函实现渔夫打鱼晒网问题

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 编写函数:如果一个渔夫从 2021 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2021

第四百七十七回

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经介绍过GetMaterialApp组件,并且介绍了它的基本用法,不过这些用法都是基于项目

七十七层楼—祈祷他能陪你爬到七十七层

老师用邮件发过来的故事,不清楚出处了,依然先感谢他的作者能够带给我们如此美丽的感动。     老师发过来时,忙碌于工作,匆匆看了一眼,感觉邮件太长,无暇顾及、它就这样一直静静的躺在了收件箱里。今天,依然是在上班时间,查找以前的邮件时,却无意中翻出了它……       老公公、老婆婆的儿女都成家立业了,各自拥有小家庭。于是老公公、老婆婆把旧房子卖了,搬到公寓大楼去住。 老公公、老

七十七、Linux中一键安装Scala211和spark245

一、安装Scala     解压Scala压缩包到soft目录,并改名为scala211     cd /opt/soft/install/     ls     tar -zxvf  scala-2.11.12.tgz  -C /opt/soft     cd /opt/soft     ls      mv  scala-2.11.12   scala211     然后,修改一下profil