Flutter高级搜索下拉插件fancy_search_dropdown的使用
Flutter高级搜索下拉插件fancy_search_dropdown的使用

Fancy Search Dropdown
fancy_search_dropdown
包是一个可定制的 Flutter 小部件,提供了一种优雅且高效的方式来显示带有搜索功能的下拉菜单。此小部件旨在通过在用户输入时提供动态建议来增强用户体验,从而使其轻松搜索并从预定义列表中选择选项。
特性
- 可定制建议:提供要在下拉菜单中显示的一系列建议。
- 可配置样式:使用
FancySearchDropdownConfig
自定义下拉菜单的外观。 - 调试模式:可以选择启用或禁用调试模式。
安装
在 pubspec.yaml
文件中添加以下依赖项:
dependencies:
fancy_search_dropdown: ^0.0.1
运行 flutter pub get
来安装包。
使用
要使用 FancySearchDropdown
,请遵循以下步骤:
- 导入包
import 'package:fancy_search_dropdown/fancy_search_dropdown.dart';
- 示例用法
这是一个在 Flutter 应用程序中使用 FancySearchDropdown
的基本示例:
import 'dart:developer';
import 'package:fancy_search_dropdown/fancy_search_dropdown.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Fancy Search Dropdown"),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: FancySearchDropdown(
labelText: "Select Hospital Name",
suggestions: const [
"Family Doctor",
"Preferred Doctor",
"Preferred Hospital",
"Care Taker",
"Pharmacy",
"Lab",
],
selectedValue: "Lab",
maxSuggestionHeight: 300,
debugMode: false,
// Uncomment and customize the configuration as needed:
// config: FancySearchDropdownConfig(
// optionBoxElevation: 3,
// inActiveSuffix: Icon(Icons.password),
// activeSuffix: Icon(Icons.email),
// borderRadius: 8,
// optionTextStyle: TextStyle(color: Colors.red),
// labelTextStyle: TextStyle(color: Colors.black),
// activeLeading: Icon(Icons.person),
// tileBuilder:(context,index,suggestion)=>ListTile(leading:Text(suggestion)),
// inputDecoration: InputDecoration(
// focusedBorder: OutlineInputBorder(),
// border: OutlineInputBorder(),
// enabledBorder: OutlineInputBorder(),
// ),
// ),
onSelected: (value) {
log("Selected value: $value");
},
),
),
);
}
}
参数
suggestions
: 要在下拉菜单中显示的一系列建议。onSelected
: 当选择建议时触发的回调函数。labelText
: 要显示在TextField
中的标签文本。selectedValue
: 初始选中的值。maxSuggestionHeight
: 建议列表的最大高度。config
: 用于样式化下拉菜单的配置选项。debugMode
: 布尔值以启用或禁用调试模式。生产环境中设置为false
。
配置
FancySearchDropdownConfig
允许你自定义下拉菜单的外观。例如:
FancySearchDropdownConfig(
inputDecoration: InputDecoration(
border: OutlineInputBorder(),
suffixIcon: Icon(Icons.arrow_drop_down),
),
labelTextStyle: TextStyle(color: Colors.blue),
activeSuffix: Icon(Icons.arrow_drop_up),
inActiveSuffix: Icon(Icons.arrow_drop_down),
activeLeading: Icon(Icons.search),
inActiveLeading: Icon(Icons.search_off),
)
更多关于Flutter高级搜索下拉插件fancy_search_dropdown的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter高级搜索下拉插件fancy_search_dropdown的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
fancy_search_dropdown
是一个用于 Flutter 的高级搜索下拉插件,它允许用户从下拉列表中进行搜索并选择项目。这个插件非常适合需要用户从大量选项中进行筛选和选择的场景。
安装
首先,你需要在 pubspec.yaml
文件中添加 fancy_search_dropdown
依赖:
dependencies:
flutter:
sdk: flutter
fancy_search_dropdown: ^1.0.0 # 请根据实际版本号进行替换
然后运行 flutter pub get
来安装依赖。
基本用法
以下是一个简单的使用示例:
import 'package:flutter/material.dart';
import 'package:fancy_search_dropdown/fancy_search_dropdown.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Fancy Search Dropdown Example'),
),
body: Center(
child: FancySearchDropdown<String>(
items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
onChanged: (value) {
print('Selected: $value');
},
),
),
),
);
}
}
参数说明
FancySearchDropdown
提供了多种参数来自定义其行为:
items
: 一个包含所有可选项目的列表,类型为List<T>
。onChanged
: 当用户选择一个项目时触发的回调函数,参数为选中的项目。hintText
: 下拉框未选中时的提示文本。searchHintText
: 搜索框的提示文本。noResultsText
: 当搜索结果为空时显示的文本。itemBuilder
: 自定义下拉列表中每个项目的显示方式。onSearch
: 自定义搜索逻辑,如果不提供,默认使用toString()
方法进行匹配。selectedItemBuilder
: 自定义选中项目的显示方式。validator
: 用于验证用户输入的自定义验证函数。enabled
: 控制下拉框是否可用。decoration
: 自定义下拉框的外观。
示例:自定义搜索逻辑
你可以通过 onSearch
参数来自定义搜索逻辑。例如,如果你想根据项目的首字母进行搜索,可以这样做:
FancySearchDropdown<String>(
items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
onChanged: (value) {
print('Selected: $value');
},
onSearch: (query, items) {
return items.where((item) => item.toLowerCase().startsWith(query.toLowerCase())).toList();
},
);
示例:自定义项目显示
你可以使用 itemBuilder
参数自定义下拉列表中每个项目的显示方式:
FancySearchDropdown<String>(
items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
onChanged: (value) {
print('Selected: $value');
},
itemBuilder: (context, item, isSelected) {
return ListTile(
title: Text(item),
trailing: isSelected ? Icon(Icons.check) : null,
);
},
);
示例:自定义选中项目显示
你可以使用 selectedItemBuilder
参数自定义选中项目的显示方式:
FancySearchDropdown<String>(
items: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig', 'Grape'],
onChanged: (value) {
print('Selected: $value');
},
selectedItemBuilder: (context, item) {
return Text('Selected: $item');
},
);