当前位置: 首页 > news >正文

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 的使用,你可以为用户提供清晰而一致的选择界面,从而提升应用的用户体验。

相关文章:

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

Flutter 中的 ToggleButtons 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;ToggleButtons 是一种允许用户在一组选项中进行切换选择的控件。它通常用于展示一组相关选项&#xff0c;让用户可以快速切换选择。ToggleButtons 是一种水平排列的按钮集合&#xff0c;其中…...

【MYSQL】一颗B+树可以保存多少条数据

引言 事万物都有自己的单元体系&#xff0c;若干个小单体组成一个个大的个体。就像拼乐高一样&#xff0c;可以自由组合。所以说&#xff0c;如果能熟悉最小单元&#xff0c;就意味着我们抓住了事物的本事&#xff0c;再复杂的问题也会迎刃而解。 存储单元 存储器范围比较大…...

ssm125四六级报名与成绩查询系统+jsp

四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…...

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面&#xff0c;用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …...

内容安全(DPI和DFI解析)

内容安全前言&#xff1a; 防火墙的本质其实就是包过滤&#xff0c;我们通常所说的安全设备&#xff08;如&#xff1a;IPS、IDS、AV、WAF&#xff09;的检测重心是应用层。下一代防火墙基于传统防火墙的拓展能力&#xff0c;就是可以将以上的安全设备模块集成在一起&#xff0…...

2024数维杯数学建模A题B题C题思路+模型+代码(开赛后第一时间更新)

2024数维杯数学建模A题B题C题思路模型代码&#xff08;开赛后第一时间更新&#xff09; https://mbd.pub/o/bread/ZpWakpdq https://mbd.pub/o/bread/ZpWakpdq 2024年第九届数维杯大学生数学建模挑战赛参赛规则 竞赛要求及论文提交方式; ①本次参赛作品统一在线提交到竞赛…...

SpringSecurity多表,多端账户登录

本文章对应视频SpringSecurity6多端账号登录&#xff0c;可无限扩展教程&#xff0c;记得三连哦&#xff0c;这对我很重要呢&#xff01; 温馨提示&#xff1a;视频与文章相辅相成&#xff0c;结合学习效果更强哦&#xff01;更多视频教程可移步B站【石添的编程哲学】 SpringSe…...

绝地求生PUBG新老艾伦格有什么差别 老艾伦格什么时候回归

复古风格的艾伦格原始地图携带着那些标志性的记忆符号华丽回归&#xff0c;邀请您沉浸于往昔的每一处细节探索中。我们不仅还原了游戏诞生的起点&#xff0c;还在其中巧妙融入现代游戏元素&#xff0c;构筑一座连接昔日与今朝的桥梁&#xff0c;完美融合了经典与创新的游戏体验…...

Windows下安装Node.js、npm和electronic,并运行一个Hello, World!脚本程序

20240510 By wdhuag 目录 简介&#xff1a; 参考&#xff1a; 安装Node.js 安装npm 配置npm&#xff1a; 修改包存放目录和缓存目录 切换镜像源 使用 nrm 切换镜像源 安装Electron 运行一个Hello, World!脚本程序 安装Yarn JavaScript 指南 简介&#xff1a; Nod…...

【精品案例】化工炼化企业信息化建设解决方案(74页PPT)

一、资料介绍 化工炼化企业信息化建设解决方案是一份详尽且全面的指导文件&#xff0c;旨在助力化工炼化企业实现信息化、智能化和数字化转型。本资料以74页的PPT形式呈现&#xff0c;围绕智能化工程施工方案、化工炼化企业信息化以及化工行业数字化转型等关键词&#xff0c;为…...

【Unity Animation 2D】Unity Animation 2D骨骼绑定与动画制作

一、图片格式为png格式&#xff0c;并且角色各部分分离 图片参数设置 需要将Sprite Mode设置为Single&#xff0c;否则图片不能作为一个整体 1、创建骨骼 1.1 旋转Create Bone&#xff0c;点击鼠标左键确定骨骼位置&#xff0c;移动鼠标再次点击鼠标左键确定骨骼&#xff0c…...

工器具管理(基于若依)

文章目录 前言一、工器具管理项目总览 二、入库功能1. 前端1.1 界面展示1.2 具体操作实现1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具入库 三、领用功能1. 前端1.1 界面展示1.2 具体实现操作1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具领用 遇到的问题1. 同一页面展示…...

UE4_照亮环境_光束light beam

学习笔记&#xff0c;不喜勿喷&#xff0c;侵权立删&#xff01;祝愿生活越来越好&#xff01; 光束&#xff1a;模拟大气中散射的光线。利用定向光源模拟真实曙暮光效果或大气散射的阴影&#xff0c;即可生成 光束 。这些光线为场景添加深度和真实度。 一&#xff1a;一些参数…...

springboot3项目练习详细步骤(第三部分:文章管理模块)

目录 发布文章 接口文档 业务实现 自定义参数校验 项目参数要求 实现思路 实现步骤 文章列表(条件分页) 接口文档 业务实现 mapper映射 更新文章 接口文档 业务实现 获取文章详情 接口文档 业务实现 删除文章 接口文档 业务实现 文章管理业务表结构…...

【面试八股总结】C++11新特性:智能指针

参考资料 &#xff1a;阿秀、代码随想录 智能指针是一个类&#xff0c;用于存储指向动态分配对象的指针&#xff0c;负责自动释放动态分配的对象&#xff0c;防止堆内存泄露。动态分配的资源&#xff0c;交给一个类对象去管理&#xff0c;当类对象声明周期结束时&#xff0c;自…...

【教程向】从零开始创建浏览器插件(二)深入理解 Chrome 扩展的 manifest.json 配置文件

第二步&#xff1a;深入理解 Chrome 扩展的 manifest.json 配置文件 上一次我们已经着手完成了一个自己的浏览器插件&#xff0c;链接在这里&#xff1a;我是链接 在本篇博客中&#xff0c;我们将更详细地探讨 Chrome 扩展中的 manifest.json 文件。这个文件是每个浏览器扩展…...

美易官方:美国房地产贷款逾期率飙升,银行业危机仍可控?现货黄金暂守2360

美国房地产贷款逾期率飙升&#xff0c;银行业危机仍可控&#xff1f;现货黄金暂守2360 近年来&#xff0c;美国房地产市场一直处于波动之中&#xff0c;尤其是商业房地产领域。近期&#xff0c;美联储发出警告&#xff0c;称商业房地产贷款逾期率持续攀升&#xff0c;银行正在为…...

SwiftUI中的@StateObject和@ObservedObject的区别

SwiftUI中的StateObject和ObservedObject属性包装器指示视图更新以响应被观察对象的变化。虽然这两个属性包装器看起来很相似&#xff0c;但在使用SwiftUI构建应用程序时&#xff0c;有一个关键的区别需要理解。 两个属性包装器都要求对象符合ObservableObject协议。这个协议表…...

类与对象(二)

封装 封装作为面向对象三大特性&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;之一&#xff0c;那如何实现封装性的呢&#xff1f;就又得拿出上面的访问修饰限定符的图 public: 就是在任何地方都可以访问 protected: 涉及子类在介绍继承时详细介绍 default: …...

LeetCode/NowCoder-链表经典算法OJ练习2

最好的&#xff0c;不一定是最合适的&#xff1b;最合适的&#xff0c;才是真正最好的。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;分割链表 题目二&#xff1a;环形链表的约瑟夫问题 SUMUP结尾 说在前面 dear朋友们大家好&#xff01;&…...

自托管信息聚合器FeedMe:全栈部署与高效信息管理实践

1. 项目概述&#xff1a;一个“喂饱”你的信息聚合器最近在折腾一个挺有意思的小项目&#xff0c;叫 FeedMe。这名字起得挺直白&#xff0c;翻译过来就是“喂我”。它的核心目标&#xff0c;就是帮你把散落在互联网各个角落的信息源——比如你关注的博客、技术论坛、新闻网站、…...

免费额度即将失效?ElevenLabs 2024.6.1新规生效前,必须完成的5项额度迁移准备

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs免费额度机制的本质解析 ElevenLabs 的免费额度并非按“每月重置”的静态配额&#xff0c;而是一种基于账户生命周期的动态信用池&#xff08;Credit Pool&#xff09;&#xff0c;其底层由实…...

Linuxbonding链路稳定性治理方法

Linuxbonding链路稳定性治理方法这是一篇面向中级 Linux 使用者的技术文章&#xff0c;主题聚焦在bonding链路&#xff0c;重点讨论链路聚合、冗余切换和接口状态。在真实生产环境中&#xff0c;bonding链路相关问题往往不会以单一错误形式出现&#xff0c;而是混杂在日志、权限…...

Iris API错误处理机制与嵌入式系统优化实践

1. Iris API错误处理机制解析在嵌入式系统开发中&#xff0c;API的健壮性直接影响整个系统的稳定性。Iris框架作为ARM架构下的核心组件&#xff0c;其错误处理机制基于JSON-RPC 2.0规范进行了深度定制&#xff0c;特别适合资源受限的嵌入式环境。与通用Web API不同&#xff0c;…...

MedAgentBench:大语言模型在医学诊断中的动态评估与智能体构建实践

1. 项目概述&#xff1a;当大语言模型成为医学诊断的“实习生”最近在医学人工智能的圈子里&#xff0c;一个名为MedAgentBench的项目引起了我的注意。它来自斯坦福大学机器学习组&#xff0c;这个名字本身就自带光环。简单来说&#xff0c;这不是一个直接看病的AI&#xff0c;…...

CircuitPython REPL与库管理:嵌入式开发的效率利器

1. CircuitPython REPL&#xff1a;你的嵌入式开发“瑞士军刀” 如果你玩过Arduino&#xff0c;肯定对“上传-编译-看结果”这个循环不陌生。每次改一行代码&#xff0c;都得重新编译、上传&#xff0c;然后盯着串口看输出&#xff0c;效率低得让人抓狂。CircuitPython带来的R…...

提示工程实战:从核心模式到高级技巧的AI交互优化指南

1. 项目概述&#xff1a;从代码仓库到提示工程实战指南最近在GitHub上看到一个名为“SKY-lv/prompt-engineer”的仓库&#xff0c;点进去一看&#xff0c;发现这不仅仅是一个简单的代码集合&#xff0c;更像是一位资深从业者&#xff08;SKY-lv&#xff09;精心整理的提示工程实…...

Nexus:RAG 时代终结?编译器 AI 知识层来了

最近 Pinecone 发布了一个新东西&#xff1a;**Nexus。**最早我是在抖音上看到的&#xff0c;说实话&#xff0c;这种标题挺吓人的&#xff0c;低劣但有效&#xff0c;我都忍不住要点进去&#xff1a; RAG 时代终结了。向量数据库不够用了。Agent 需要 Knowledge Engine。因为…...

【2026最新】鸿蒙NEXT数据持久化实战:培训班管理系统数据存储全攻略

鸿蒙开发中数据总是丢失&#xff1f;本地存储和网络请求搞不定&#xff1f;本文用15分钟带你彻底搞懂Preferences、RDB、HTTP三大数据持久化方案&#xff0c;附完整培训班管理系统实战代码和踩坑记录&#xff0c;让你的鸿蒙App数据存储从此安全可靠&#xff01;一、学员信息本地…...

ElevenLabs乌尔都文TTS接入全链路解析:从API密钥配置到自然停顿优化(含3个未公开参数)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs乌尔都文TTS接入全链路解析&#xff1a;从API密钥配置到自然停顿优化&#xff08;含3个未公开参数&#xff09; ElevenLabs 官方虽未在文档中明确标注乌尔都语&#xff08;ur-PK&#xff09;…...