Flutter 中的 ToggleButtons 小部件:全面指南

Flutter 中的 ToggleButtons 小部件:全面指南

在 Flutter 中,ToggleButtons 是一种允许用户在一组选项中进行切换选择的控件。它通常用于展示一组相关选项,让用户可以快速切换选择。ToggleButtons 是一种水平排列的按钮集合,其中只有一个按钮可以被选中。它们在设计上与 Material Design 中的开关按钮相似,适用于简单的是/否、开/关或真/假类型的选择。

基础用法

ToggleButtons 最基本的用法是定义一组按钮和一个选择回调:

ToggleButtons(children: Map<String, Widget>.fromIterable(['Yes', 'No', 'Maybe'],key: (value) => value,),isSelected: [true, false, false],onPressed: (index) {// 当按钮被按下时执行的操作},
)

在这个例子中,我们创建了三个按钮,其中第一个按钮(“Yes”)默认被选中。

自定义样式

ToggleButtons 提供了一些属性来定制按钮的外观和行为:

按钮样式

  • children: 一个映射,键是按钮的标识符,值是按钮的 Widget。
  • style: 定义未选中按钮的文本样式。
  • selectedStyle: 定义选中按钮的文本样式。
ToggleButtons(children: <String, Widget>{'Yes': Text('Yes'),'No': Text('No'),'Maybe': Text('Maybe'),},style: TextStyle(color: Colors.blueGrey),selectedStyle: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),// ... 其他属性
)

选中状态

  • isSelected: 一个布尔值列表,表示每个按钮是否被选中。
ToggleButtons(isSelected: [true, false, false],// ... 其他属性
)

按钮回调

  • onPressed: 当用户点击按钮时调用的回调,参数是被点击按钮的索引。
ToggleButtons(onPressed: (index) {// 根据索引处理按钮的选中逻辑},// ... 其他属性
)

实例:颜色选择器

ToggleButtons 可以用于实现颜色选择器,允许用户在一组颜色中选择:

ToggleButtons(children: <String, Widget>{'Red': Container(width: 20.0, height: 20.0, color: Colors.red),'Green': Container(width: 20.0, height: 20.0, color: Colors.green),'Blue': Container(width: 20.0, height: 20.0, color: Colors.blue),},isSelected: [true, false, false],onPressed: (index) {// 处理颜色选择逻辑},
)

实例:尺寸选择

使用 ToggleButtons 可以让用户选择不同的尺寸:

ToggleButtons(children: <String, Widget>{'S': Text('Small'),'M': Text('Medium'),'L': Text('Large'),},isSelected: [false, true, false],onPressed: (index) {// 根据索引更新当前选择的尺寸},
)

实例:动态更新选中状态

可以动态地更新 isSelected 列表来改变按钮的选中状态:

// 假设这是当前选中的尺寸索引
int selectedSizeIndex = 1;// ... 在 Widget 中
ToggleButtons(children: <String, Widget>{'S': Text('Small'),'M': Text('Medium'),'L': Text('Large'),},isSelected: [false, true, false], // 根据 selectedSizeIndex 动态更新onPressed: (index) {setState(() {selectedSizeIndex = index;});},
)

#结语

ToggleButtons 是 Flutter 中一个简单而直观的小部件,它非常适合用于实现单选按钮组。通过掌握 ToggleButtons 的使用,你可以为用户提供清晰而一致的选择界面,从而提升应用的用户体验。

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

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

相关文章

数据结构与算法学习笔记之线性表五---循环链表的表示和实现(C++)

目录 前言 1.双向链表的定义 2.双向链表的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.表长 6.获取数据元素 7.前驱节点 8.后继节点 9.插入 10.删除 11.遍历 12.完整代码 前言 记录下双向链表的表示和实现。 1.循环链表的定义 循环链表(circular linked list)…

The Onion Router-洋葱

目录 Tor的运作原理 Tor挑战和局限性 Tor&#xff0c;即The Onion Router&#xff08;洋葱路由器&#xff09;&#xff0c;是一个用于匿名通信的开放网络&#xff0c;它旨在增强用户的隐私和安全。Tor的名字源自其设计原理&#xff0c;类似于将信息包装在多层“洋葱”中&…

本来还挺喜欢……

前阵子买了个天空星开发板&#xff0c;到手之后发觉不对劲。 之前我们玩玩开发板都是用的面包板的&#xff0c;就算是ESP那种比较宽的板子用两个面包板拼一下也勉强可以用。 但是天空星它的引脚是分为两组&#xff0c;每组有两排&#xff0c;如果我们还是直接使用面包板的话&a…

C 语言函数:入门指南

C 语言中的函数声明和定义 您可以通过以下方式创建并调用函数&#xff1a; // 创建一个函数 void myFunction() {printf("我刚被执行了!"); }int main() {myFunction(); // 调用函数return 0; }一个函数包括两个部分&#xff1a; 声明&#xff1a;函数名称、返回类…

单页源码加密屋zip文件加密API源码

简介&#xff1a; 单页源码加密屋zip文件加密API源码 api源码里面的参数已改好&#xff0c;往服务器或主机一丢就行&#xff0c;出现不能加密了就是加密次数达到上限了&#xff0c;告诉我在到后台修改加密次数 点击下载

Spring事务-使用@Transactional在事务中立即提交部分数据库操作

目录 一、背景 二、需求 三、Spring事务的传播级别及失效场景 1.Spring事务的传播级别 2.失效场景及正确用法 一、背景 在项目中使用数据库锁表实现分布式锁&#xff0c;在方法A中调用方法B&#xff0c;方法B是一个多节点同步的方法&#xff0c;内部使用写锁表的逻辑实现分…

【文献阅读】企业ESG表现与创新——来自A股上市公司的证据

企业ESG表现与创新——来自A股上市公司的证据 1.引言 第一段——背景介绍 可持续发展 碳达峰、碳中和 ESG既是从微观层面解决全球性社会问题的必要&#xff0c;也是实现我国经济转型、促进高质量发展的有效手段。 2017.12证监会&#xff1a;重点排污企业的环境披露 2021.6证监…

【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】

请阅读【嵌入式开发学习必备专栏】 文章目录 Debug system registers中断控制状态寄存器&#xff08;ICSR&#xff09;Debug Halting Control and Status Register, DHCSR Debug 寄存器DCRSR与DCRDRCPU 寄存器读操作CPU 寄存器写操作CPU 寄存器选择CPU 寄存器读写示例 调试故障…

第十五篇:全面防护:构建不容侵犯的数据库安全策略与实战指南

全面防护&#xff1a;构建不容侵犯的数据库安全策略与实战指南 1. 引言&#xff1a;数据库安全的现代战略 1.1 简介&#xff1a;数据库安全在当今的数字化时代中的重要性 在数字化的浪潮中&#xff0c;数据已成为企业乃至国家的核心资产&#xff0c;其价值不亚于实体世界的黄…

第五百零三回

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容&#xff0c;本章回中将介绍使用get进行路由管理.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

Kubernetes(k8s)的Network Policies解析

目录 1.关键特性2.示例配置3.最佳实践4.注意事项 Kubernetes&#xff08;k8s&#xff09;的Network Policies是一种资源对象&#xff0c;用于定义Pod之间的网络通信规则&#xff0c;以此来控制和隔离集群内部的网络流量。这为Kubernetes集群提供了更细粒度的网络安全控制能力。…

RAG应用中的路由模式

依据的用户查询意图在 RAG 应用程序使用“路由控制模式”可以帮助我们创建更强大的 RAG 应用程序。我们通常希望用户能够访问的数据可以来自各种来源,如报告、文档、图片、数据库和第三方系统。 对于基于业务的 RAG 应用程序,我们可能还希望用户能够与其它业务系统进行交互,…

spring注解使用(例子)

Dao层&#xff1a; 接口&#xff1a; public interface UserDao {public void save(); } 实现类&#xff1a; Component //声明为组件&#xff08;关键&#xff09; public class UserDaoIim implements UserDao {Overridepublic void save() {System.out.println("sa…

大模型微调方法汇总

微调方法 Freeze方法P-tuning方法 prefix-tuningPrompt TuningP-tuning v1P-tuning v2Lora方法 重要相关参数LoRA 的优势Qlora方法 相关参数微调经验 模型选择模型大小选择数据处理微调方案英文模型需要做词表扩充吗&#xff1f;如何避免灾难遗忘大模型的幻觉问题微调后的输出…

戴尔数据泄露影响近五千万用户,数据保护应该得到重视

据BleepingComputer报道&#xff0c;电脑制造商戴尔因网站漏洞遭黑客入侵&#xff0c;约4900万用户信息疑遭泄露。根据黑客发布的销售帖子&#xff0c;泄露数据最多的前五个国家分别是美国、中国、印度、澳大利亚和加拿大。 据BleepingComputer报道&#xff0c;电脑制造商戴尔因…

Nios实验使用串口输出“Hello Nios-II”字符到笔记本电脑

目录 实验过程 创建工程 修改程序 编译工程 运行项目 效果实现 总结 参考 实验过程 硬件设计见博主上篇博客 软件部分设计 下面使用 Nios II Software Build Tools for Eclipse 来完成当前项目的软件开发。 启动 Nios II SBT 按照下图所示点击 Nios II Software Build…

Swift—手写防抖、手写图片预加载与多张图片拼接

什么是防抖&#xff0c;为什么要防抖&#xff1f; 比如我们在文档在线编辑中修改文档内容&#xff0c;总不能打一个字就发送一次更新请求吧&#xff0c;用户疯狂点击一个按钮&#xff0c;总不能一直触发按钮的逻辑吧。防抖被用于避免频繁触发的事件。 Swift实现防抖代码&…

Cocos Creator 3.8.x报错:5302

在小游戏加载某个bundle后&#xff0c;如果报以下错误&#xff1a; 5302&#xff1a;Can not find class %s 说明bundle中某个预制件*.prefab引用了未加载的bundle的资源。 解决方法有两个&#xff1a; 1、将引用的资源移到预制件*.prefab相同的bundle下&#xff1b; 2、将…

编码器介绍与应用

一.概述 1.编码器 编码器&#xff0c;是一种用来测量机械旋转或位移的传感器。这种传感器能够测量机械部件在旋转或直线运动时的位移位置或速度等信息&#xff0c;并将其转换成一系列电信号。其可和电机组装到一起用&#xff0c;反馈电机方向、转换角度的&#xff0c;然后电机…

对语言模型的通用声学攻击

对语言模型的通用声学攻击主要涉及到通过生成对抗性扰动来干扰或欺骗语音识别系统。这种攻击可以通过多种方式实现&#xff0c;包括但不限于基于深度学习的方法和特定的攻击策略。 通用音频对抗性扰动生成器&#xff08;UAPG&#xff09;是一种有效的工具&#xff0c;它能够在任…