Flutter搜索栏插件standard_searchbar_v2的使用

Flutter搜索栏插件standard_searchbar_v2的使用

标题

Standard SearchBar

内容

一个简单且非常可定制的搜索栏组件,适用于Flutter。

特性

  • 简单实现搜索栏。
  • 自定义搜索栏外观:
    • 更改搜索图标。
    • 调整大小和颜色。
    • 个性化占位符文本。

安装

pubspec.yaml文件中添加以下行:

dependencies:
  standard_searchbar: ^2.1.4

或通过命令行安装:

flutter pub add standard_searchbar_v2

然后运行flutter pub get以安装包。

使用方法

1 导入包:

import 'package:standard_searchbar/new/standard_searchbar.dart';

import 'package:standard_searchbar/old/standard_searchbar.dart';

创建StandardSearchBar组件:

StandardSearchBar(
  onChanged: (value) {
    // 处理搜索输入 变更
  },
  onSubmitted: (value) {
    // 处理搜索提交
  },
),

示例代码

import 'package:flutter/material.dart';
import 'package:standard_searchbar/new/standard_search_anchor.dart';
import 'package:standard_searchbar/new/standard_search_bar.dart';
import 'package:standard_searchbar/new/standard_suggestion.dart';
import 'package:standard_searchbar/new/standard_suggestions.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Standard SearchBar Example'),
        ),
        body: const SizedBox(
          width: double.infinity,
          child: Column(
            children: [
              SizedBox(height: 110),
              SizedBox(
                width: 360,
                child: StandardSearchAnchor(
                  searchBar: StandardSearchBar(
                    bgColor: Colors.red,
                  ),
                  suggestions: StandardSuggestions(
                    suggestions: [
                      StandardSuggestion(text: 'Suggestion 1'),
                      StandardSuggestion(text: 'Suggestion 2'),
                      StandardSuggestion(text: 'Suggestion 3'),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ),
        backgroundColor: Colors.black12,
      ),
    );
  }
}

更多关于Flutter搜索栏插件standard_searchbar_v2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter搜索栏插件standard_searchbar_v2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用standard_searchbar_v2插件的一个简单示例。首先,确保你已经在pubspec.yaml文件中添加了该插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  standard_searchbar_v2: ^最新版本号  # 请替换为实际最新版本号

然后,运行flutter pub get来安装依赖。

接下来,是一个如何在Flutter应用中使用standard_searchbar_v2的示例代码:

import 'package:flutter/material.dart';
import 'package:standard_searchbar_v2/standard_searchbar_v2.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<String> suggestions = [
    'Apple',
    'Banana',
    'Cherry',
    'Date',
    'Elderberry',
    'Fig',
    'Grape',
    'Honeydew',
    'Kiwi',
    'Lemon'
  ];

  String? searchQuery = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Search Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: <Widget>[
            StandardSearchBarV2(
              hintText: 'Search for fruits...',
              onChanged: (value) {
                setState(() {
                  searchQuery = value;
                });
              },
              onSubmitted: (value) {
                print('Search query submitted: $value');
              },
              suggestions: suggestions
                  .where((element) =>
                      element.toLowerCase().contains(searchQuery!.toLowerCase()))
                  .toList(),
              decoration: InputDecoration(
                prefixIcon: Icon(Icons.search),
                border: OutlineInputBorder(),
              ),
            ),
            SizedBox(height: 20),
            Expanded(
              child: searchQuery == null || searchQuery!.isEmpty
                  ? Center(child: Text('Enter a search term'))
                  : ListView.builder(
                      itemCount: suggestions
                          .where((element) =>
                              element.toLowerCase().contains(searchQuery!.toLowerCase()))
                          .toList()
                          .length,
                      itemBuilder: (context, index) {
                        final String suggestion = suggestions
                            .where((element) =>
                                element.toLowerCase().contains(searchQuery!.toLowerCase()))
                            .toList()[index];
                        return ListTile(
                          title: Text(suggestion),
                        );
                      },
                    ),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释:

  1. 依赖导入:首先导入standard_searchbar_v2包。
  2. 数据准备:定义一个包含搜索建议的列表suggestions
  3. UI构建
    • 使用StandardSearchBarV2小部件创建一个搜索栏。
    • hintText属性设置提示文本。
    • onChanged回调在搜索文本变化时更新searchQuery状态。
    • onSubmitted回调在用户提交搜索时打印搜索查询。
    • suggestions属性根据当前searchQuery动态过滤建议列表。
    • decoration属性自定义搜索栏的样式。
  4. 搜索结果显示
    • 如果searchQuery为空或未设置,显示提示文本。
    • 否则,根据当前searchQuery显示过滤后的建议列表。

这个示例展示了如何使用standard_searchbar_v2插件创建一个基本的搜索功能,包括动态建议过滤和搜索结果显示。你可以根据需要进一步自定义和扩展这个示例。

回到顶部