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

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

在 Flutter 中,FilterChip 是一种特殊类型的 Chip,用于呈现过滤选项。用户可以通过点击 FilterChip 来应用相应的过滤条件,这在需要对列表或集合进行筛选的场景中非常有用,如在电商应用中筛选商品,或在新闻应用中根据类别筛选文章。

基础用法

FilterChip 最基本的用法是显示一段文本,并且允许用户点击以应用过滤:

dart 复制代码
FilterChip(
  label: Text('Basic FilterChip'),
  onSelected: (bool selected) {
    // 当 FilterChip 被点击时执行的操作
  },
)

自定义样式

FilterChip 提供了多种属性来定制其外观:

背景颜色

  • backgroundColor: 设置 FilterChip 的背景颜色。
dart 复制代码
FilterChip(
  label: Text('Colored FilterChip'),
  backgroundColor: Colors.blue,
  onSelected: (bool selected) {/* ... */},
)

前景色

  • foregroundColor: 设置 FilterChip 的前景色,如文本颜色。
dart 复制代码
FilterChip(
  label: Text('White Text FilterChip'),
  foregroundColor: Colors.white,
  backgroundColor: Colors.blue,
  onSelected: (bool selected) {/* ... */},
)

标签

  • label: 设置 FilterChip 的标签,可以是任意的 Widget。
dart 复制代码
FilterChip(
  label: Text('Custom Label FilterChip'),
  onSelected: (bool selected) {/* ... */},
)

选中状态

  • selected: 定义 FilterChip 是否被选中。
  • onSelected: 设置当 FilterChip 被点击时的回调。
dart 复制代码
FilterChip(
  label: Text('Selectable FilterChip'),
  selected: true,
  onSelected: (bool selected) {
    // 处理选中状态改变
  },
)

实例:带有图标的 FilterChip

FilterChip 可以包含图标,例如在标签的前面或后面:

dart 复制代码
FilterChip(
  prefix: Icon(Icons.local_offer), // 前缀图标
  label: Text('FilterChip with Icon'),
  onSelected: (bool selected) {/* ... */},
)

实例:筛选条件

FilterChip 可以用来展示筛选条件,允许用户通过点击来选择或取消选择:

dart 复制代码
FilterChip(
  label: Text('Discounts'),
  selected: discountsFilterActive, // 假设这是一个布尔值
  onSelected: (bool value) {
    // 更新筛选条件的状态
    setState(() {
      discountsFilterActive = value;
    });
  },
)

实例:动态 FilterChip

可以动态创建 FilterChip 列表,根据筛选项的数量或用户的选择动态添加或移除 FilterChip

dart 复制代码
List<String> _selectedFilters = [];

@override
Widget build(BuildContext context) {
  return Wrap(
    children: filters.map((filter) {
      return FilterChip(
        label: Text(filter),
        selected: _selectedFilters.contains(filter),
        onSelected: (bool selected) {
          setState(() {
            if (selected) {
              _selectedFilters.add(filter);
            } else {
              _selectedFilters.remove(filter);
            }
          });
        },
      );
    }).toList(),
  );
}

结语

FilterChip 是 Flutter 中一个实用的小部件,它提供了一种直观的方式来展示和操作筛选条件,特别适合用于需要筛选功能的界面。掌握 FilterChip 的使用,可以帮助你创建出既美观又交互性强的用户界面,提升应用的用户体验。

相关推荐
FungLeo4 分钟前
Flutter Web 中文字体困境与渲染器选择:CanvasKit vs HTML renderer 实战
前端·flutter·html
敲代码的玉米C26 分钟前
我修的那个 bug,制造了另一个 bug
前端·人工智能·架构
gis开发之家35 分钟前
《Vue3 从入门到大神50篇》Vue3 源码详解(二十):生命周期钩子源码解析 —— onMounted / onUpdated 如何实现?
前端·javascript·前端框架·vue3·vue3源码
Narrastory39 分钟前
我用 Claude Code 写代码不到 2 小时,却花了 3 天做完这个软件—Vibe Coding 的正确姿势,是设计不是生成
前端·人工智能·github
Enaium40 分钟前
我实现了KMP的SDL绑定并编写了高性能软光追
前端·kotlin
古夕1 小时前
本地正常线上白屏:一次路由切换后刷新恢复问题的排查与修复
前端·ai编程
杉氧1 小时前
原生交互:如何在 Flutter 中嵌入 Android/iOS 原生组件并解决手势冲突
android·flutter·dart
栀鸢ouo1 小时前
解决Element Plus表格展开行横向溢出、滚动截断问题(项目实战方案)
前端·vue.js
用户39051332192881 小时前
写了5年JS,才发现这10个方法能少写一半代码
前端
平凡的阿泽1 小时前
我用TRAE Work手搓了一个「谁是卧底」小游戏
前端·javascript