Flutter搜索下拉选择插件search_dropdown的使用
Flutter 搜索下拉选择插件 search_dropdown 的使用
Flutter 简单的带搜索功能的下拉选择插件,易于定制。
功能 #
- 在下拉列表中搜索
- 单选与多选
- Material 风格的下拉菜单
- 易于自定义的界面
- 易于实现到无状态组件中
开始使用 #
packages.yaml #
search_dropdown: <最新版本>
使用方法 #
导入 #
import 'package:search_dropdown/search_dropdown.dart';
简单实现 #
// 定义一个简单的下拉搜索组件
DropDownSearch<SearchValue>(
title: const Text('选择一个名字'), // 设置标题
items: searchItems
.map((e) => DropDownSearchItem<SearchValue>(
value: e,
child: Text(e.name, style: TextStyle(fontSize: 24)),
))
.toList(),
onChanged: (SearchValue? value) {
print(value?.name); // 打印选择的值
},
);
// 定义搜索项的类
class SearchValue extends SearchItemModal {
SearchValue({required super.searchKey, required this.name});
String name;
}
// 定义搜索项列表
List<SearchValue> searchItems = [
SearchValue(searchKey: ‘adam’, name: ‘Adam’),
SearchValue(searchKey: ‘jack’, name: ‘Jack’),
SearchValue(searchKey: ‘john’, name: ‘John’),
SearchValue(searchKey: ‘doe’, name: ‘Doe’),
SearchValue(searchKey: ‘max’, name: ‘Max William’),
];
搜索项类必须继承自 SearchItemModal 并添加 required super.searchKey
作为搜索关键字 #
更多关于Flutter搜索下拉选择插件search_dropdown的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter搜索下拉选择插件search_dropdown的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
search_dropdown
是一个 Flutter 插件,用于创建一个带有搜索功能的下拉选择框。它允许用户从下拉列表中选择一个选项,并且可以通过输入关键字来快速过滤选项。
安装
首先,你需要在 pubspec.yaml
文件中添加 search_dropdown
依赖:
dependencies:
flutter:
sdk: flutter
search_dropdown: ^1.1.0
然后运行 flutter pub get
来安装依赖。
基本使用
以下是一个简单的示例,展示了如何使用 search_dropdown
插件:
import 'package:flutter/material.dart';
import 'package:search_dropdown/search_dropdown.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Search Dropdown Example'),
),
body: Center(
child: SearchDropdown(
items: [
"Apple",
"Banana",
"Cherry",
"Date",
"Elderberry",
"Fig",
"Grape"
],
hint: "Select a fruit",
onChanged: (value) {
print("Selected: $value");
},
),
),
),
);
}
}
参数说明
items
: 这是一个List<dynamic>
,包含下拉列表中的所有选项。选项可以是字符串、对象或其他类型。hint
: 这是一个String
,用于显示在下拉框中的提示文本。onChanged
: 这是一个回调函数,当用户选择一个选项时触发。参数是用户选择的选项。searchHint
: 这是一个String
,用于显示在搜索框中的提示文本。selectedItem
: 这是一个dynamic
,用于设置默认选中的选项。underline
: 这是一个Widget
,用于自定义下拉框的下划线。icon
: 这是一个Widget
,用于自定义下拉框的图标。isExpanded
: 这是一个bool
,用于指定下拉框是否应该扩展到父容器的宽度。isCaseSensitiveSearch
: 这是一个bool
,用于指定搜索时是否区分大小写。label
: 这是一个String
,用于显示在下拉框上方的标签。
高级用法
如果你需要更复杂的选项(例如,选项是对象),你可以使用 SearchDropdown
的 itemBuilder
和 itemAsString
参数来自定义显示和搜索逻辑。
class Fruit {
final String name;
final String color;
Fruit(this.name, this.color);
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
List<Fruit> fruits = [
Fruit("Apple", "Red"),
Fruit("Banana", "Yellow"),
Fruit("Cherry", "Red"),
Fruit("Date", "Brown"),
Fruit("Elderberry", "Purple"),
Fruit("Fig", "Purple"),
Fruit("Grape", "Green")
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Search Dropdown Example'),
),
body: Center(
child: SearchDropdown(
items: fruits,
hint: "Select a fruit",
onChanged: (value) {
print("Selected: ${(value as Fruit).name}");
},
itemBuilder: (context, item) {
return ListTile(
title: Text((item as Fruit).name),
subtitle: Text((item as Fruit).color),
);
},
itemAsString: (item) => (item as Fruit).name,
),
),
),
);
}
}