| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flutter code sample for [FilterChip]. |
| |
| import 'package:flutter/material.dart'; |
| |
| enum ExerciseFilter { walking, running, cycling, hiking } |
| |
| void main() => runApp(const ChipApp()); |
| |
| class ChipApp extends StatelessWidget { |
| const ChipApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| theme: ThemeData(colorSchemeSeed: const Color(0xff6750a4), useMaterial3: true), |
| home: const FilterChipExample(), |
| ); |
| } |
| } |
| |
| class FilterChipExample extends StatefulWidget { |
| const FilterChipExample({super.key}); |
| |
| @override |
| State<FilterChipExample> createState() => _FilterChipExampleState(); |
| } |
| |
| class _FilterChipExampleState extends State<FilterChipExample> { |
| bool favorite = false; |
| final List<String> _filters = <String>[]; |
| |
| @override |
| Widget build(BuildContext context) { |
| final TextTheme textTheme = Theme.of(context).textTheme; |
| |
| return Scaffold( |
| appBar: AppBar( |
| title: const Text('FilterChip Sample'), |
| ), |
| body: Center( |
| child: Column( |
| mainAxisAlignment: MainAxisAlignment.center, |
| children: <Widget>[ |
| Text('Choose an execise', style: textTheme.labelLarge), |
| const SizedBox(height: 5.0), |
| Wrap( |
| spacing: 5.0, |
| children: ExerciseFilter.values.map((ExerciseFilter exercise) { |
| return FilterChip( |
| label: Text(exercise.name), |
| selected:_filters.contains(exercise.name), |
| onSelected: (bool value) { |
| setState(() { |
| if (value) { |
| if (!_filters.contains(exercise.name)) { |
| _filters.add(exercise.name); |
| } |
| } else { |
| _filters.removeWhere((String name) { |
| return name == exercise.name; |
| }); |
| } |
| }); |
| }, |
| ); |
| }).toList(), |
| ), |
| const SizedBox(height: 10.0), |
| Text('Looking for: ${_filters.join(', ')}') |
| ], |
| ), |
| ), |
| ); |
| } |
| } |