Flutter多选项芯片选择器插件multi_chip_picker的使用
Flutter多选项芯片选择器插件multi_chip_picker的使用
多重过滤芯片选择器(MultipleFilterChipPicker)
多重过滤芯片选择器是一个允许用户选择多个过滤芯片的Flutter小部件。
截图
特性
- 可以选择和取消选择过滤芯片。
- 当过滤芯片的选择发生变化时会触发回调。
- 可以自定义过滤芯片的外观和行为。
使用方法
- 将
MultipleFilterChipPicker
小部件添加到你的Flutter应用中。 - 提供一个包含
FilterChipData
对象的列表给filterChips
参数。每个FilterChipData
对象代表一个带有标签和初始选择状态的过滤芯片。 - 指定
onChanged
回调以接收每次选择变化时更新后的已选过滤芯片列表。 - 使用可用参数自定义过滤芯片的外观和行为。
MultipleFilterChipPicker(
filterChips: [
FilterChipData('Filter 1', false),
FilterChipData('Filter 2', true),
FilterChipData('Filter 3', false),
],
onChanged: (selectedFilterChips) {
// 处理更新后的已选过滤芯片列表
},
// 根据需要自定义其他参数
)
自定义
MultipleFilterChipPicker
小部件提供了多个参数来定制过滤芯片的外观和行为:
avatar: 过滤芯片的头像小部件。
labelStyle: 过滤芯片标签的样式。
pressElevation: 过滤芯片被按下的时候的阴影高度。
disabledColor: 禁用的过滤芯片的颜色。
selectedColor: 已选过滤芯片的颜色。
tooltip: 过滤芯片的提示信息。
avatarBorder: 过滤芯片头像的边框形状。
side: 过滤芯片的边框。
clipBehavior: 过滤芯片的剪裁行为。
focusNode: 过滤芯片的焦点节点。
autofocus: 是否自动聚焦过滤芯片。
backgroundColor: 过滤芯片的背景颜色。
labelPadding: 过滤芯片标签的内边距。
visualDensity: 过滤芯片的视觉密度。
surfaceTintColor: 过滤芯片的表面色调颜色。
iconTheme: 过滤芯片的图标主题。
selectedShadowColor: 已选过滤芯片的阴影颜色。
showCheckmark: 是否在已选过滤芯片上显示复选标记。
checkmarkColor: 已选过滤芯片上的复选标记颜色。
padding: 过滤芯片的内边距。
shape: 过滤芯片的形状。
isSelectedShadowColor: 是否使用阴影颜色作为已选过滤芯片的颜色。
filterChipSpacing: 每个过滤芯片之间的间距。
你可以根据具体需求调整这些参数。
示例代码
以下是一个完整的示例代码,展示了如何在Flutter应用中使用 MultiChipPicker
小部件。
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:multi_chip_picker/multi_chip_picker.dart';
void main() {
runApp(const FilterChipPickerApp());
}
class FilterChipPickerApp extends StatelessWidget {
const FilterChipPickerApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '过滤芯片选择器',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyWidget());
}
}
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Padding(
padding: const EdgeInsets.only(left: 10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"请选择您的口味!",
style: GoogleFonts.poppins(
color: const Color.fromARGB(255, 0, 134, 243),
fontSize: 20,
fontWeight: FontWeight.w500),
),
const SizedBox(
height: 30,
),
MultiChipPicker(
filterChips: [
FilterChipData("巧克力", false),
FilterChipData("香草", false),
FilterChipData("棉花糖", false),
FilterChipData("焦糖奶油", false),
FilterChipData("草莓芝士蛋糕", false),
],
onChanged: (newValue) {
// 处理新的选择值
},
),
],
),
),
),
);
}
}
更多关于Flutter多选项芯片选择器插件multi_chip_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter多选项芯片选择器插件multi_chip_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用multi_chip_picker
插件来实现多选项芯片选择器的示例代码。
首先,确保你已经在pubspec.yaml
文件中添加了multi_chip_picker
依赖项:
dependencies:
flutter:
sdk: flutter
multi_chip_picker: ^latest_version # 请替换为最新的版本号
然后,运行flutter pub get
来获取依赖项。
接下来,在你的Dart文件中,你可以按照以下方式使用MultiChipPicker
:
import 'package:flutter/material.dart';
import 'package:multi_chip_picker/multi_chip_picker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Multi Chip Picker Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> selectedOptions = [];
List<String> options = ['Option 1', 'Option 2', 'Option 3', 'Option 4'];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Multi Chip Picker Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Selected Options:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 16),
Wrap(
spacing: 8,
runSpacing: 8,
children: List.generate(
selectedOptions.length,
(index) => Chip(
label: Text(selectedOptions[index]),
backgroundColor: Colors.blue.shade300,
onDelete: () {
setState(() {
selectedOptions.removeAt(index);
});
},
),
),
),
SizedBox(height: 32),
MultiChipPicker(
label: Text('Choose Options'),
initialSelection: Set.from(selectedOptions),
options: options.map((e) => MultiChipOption(value: e)).toList(),
onChanged: (selected) {
setState(() {
selectedOptions = selected.toList();
});
},
),
],
),
),
);
}
}
解释
- 依赖项:确保在
pubspec.yaml
文件中添加了multi_chip_picker
依赖项。 - 数据准备:在
_MyHomePageState
类中,我们定义了两个列表:selectedOptions
用于存储已选择的选项,options
存储所有可供选择的选项。 - UI布局:
- 使用
Column
布局,顶部显示一个文本标签。 - 使用
Wrap
组件来显示已选择的芯片(Chip),每个芯片都可以点击删除。 - 使用
MultiChipPicker
组件来显示可供选择的选项,选择后更新selectedOptions
列表。
- 使用
功能
MultiChipPicker
的initialSelection
参数设置初始选择项。options
参数是MultiChipOption
对象的列表,每个对象代表一个可选项。onChanged
回调在选项更改时被调用,用于更新已选择的选项列表。
通过这种方式,你可以在Flutter应用中轻松实现一个多选项芯片选择器。