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

相关推荐
一路向前的月光3 分钟前
react(9)-redux
前端·javascript·react.js
大数据追光猿30 分钟前
Python中的Flask深入认知&搭建前端页面?
前端·css·python·前端框架·flask·html5
莫忘初心丶33 分钟前
python flask 使用教程 快速搭建一个 Web 应用
前端·python·flask
xw51 小时前
Trae初体验
前端·trae
横冲直撞de1 小时前
前端接收后端19位数字参数,精度丢失的问题
前端
我是哈哈hh1 小时前
【JavaScript进阶】作用域&解构&箭头函数
开发语言·前端·javascript·html
摸鱼大侠想挣钱1 小时前
ActiveX控件
前端
谢尔登1 小时前
Vue 和 React 响应式的区别
前端·vue.js·react.js
酷酷的阿云1 小时前
Vue3性能优化必杀技:useDebounce+useThrottle+useLazyLoad深度剖析
前端·javascript·vue.js
神明木佑1 小时前
HTML 新手易犯的标签属性设置错误
前端·css·html