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

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

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

基础用法

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

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

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

自定义样式

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

按钮样式

  • children: 一个映射,键是按钮的标识符,值是按钮的 Widget。
  • style: 定义未选中按钮的文本样式。
  • selectedStyle: 定义选中按钮的文本样式。
dart 复制代码
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: 一个布尔值列表,表示每个按钮是否被选中。
dart 复制代码
ToggleButtons(
  isSelected: [true, false, false],
  // ... 其他属性
)

按钮回调

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

实例:颜色选择器

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

dart 复制代码
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 可以让用户选择不同的尺寸:

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

实例:动态更新选中状态

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

dart 复制代码
// 假设这是当前选中的尺寸索引
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 的使用,你可以为用户提供清晰而一致的选择界面,从而提升应用的用户体验。

相关推荐
QQ1__81151751523 分钟前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态24 分钟前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子25 分钟前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室27 分钟前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI28 分钟前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing28 分钟前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者28 分钟前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册28 分钟前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李30 分钟前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢32 分钟前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web