loader_search_bar 1.0.3+1

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 93

Loader SearchBar

pub package

Flutter widget integrating search field feature into app bar, allowing to receive query change callbacks and automatically load new data set into ListView. It replaces standard AppBar widget and needs to be placed underneath Scaffold element in the widget tree to work properly.

Loader SearchBar demo

Getting started

To start using SearchBar insert it in place of an AppBar element in the Scaffold widget. Regardless of the use case, defaultBar named argument has to be specified, which basically is a widget that will be displayed whenever SearchBar is not in activated state:

@override
Widget build(BuildContext context) {
   return Scaffold(
     appBar: SearchBar(
       defaultBar: AppBar(
         leading: IconButton(
           icon: Icon(Icons.menu),
           onPressed: _openDrawer,
         ),
         title: Text('Default app bar title'),
       ),
       ...
     ),
     body: _body,
     drawer: _drawer,
   );
}

Optional attributes

  • searchHint - hint string being displayed until user inputs any text,
  • initialQuery - query value displayed for the first time in search field,
  • iconified - boolean value indicating way of representing non-activated SearchBar:
    • true if widget should be showed as an action item in defaultBar,
    • false if widget should be merged with defaultBar (only leading icon of the default widget and search input field are displayed in such case),
  • autofocus - boolean value determining if search text field should get focus whenever it becomes visible,
  • autoActive - ,
  • attrs - SearchBarAttrs class instance allowing to specify part of exact values used during widget building (e.g. search bar colors, text size, border radius),
  • controller - SearchBarController object that provides a way of interacing with current state of the widget,
  • searchItem - defining how to build and position search item widget in app bar,
  • overlayStyle - status bar overlay brightness applied when widget is activated.

Query callbacks

To get notified about user input specify onQueryChanged and/or onQuerySubmitted callback functions that receive current query string as an argument:

appBar: SearchBar(
   ...
   onQueryChanged: (query) => _handleQueryChanged(context, query),
   onQuerySubmitted: (query) => _handleQuerySubmitted(context, query),
),

QuerySetLoader

By passing QuerySetLoader object as an argument one can additionally benefit from search results being automatically built as ListView widget whenever search query changes:

appBar: SearchBar(
  ...
  loader: QuerySetLoader<Item>(
     querySetCall: _getItemListForQuery,
     itemBuilder: _buildItemWidget,
     loadOnEachChange: true,
     animateChanges: true,
  ),
),

List<Item> _getItemListForQuery(String query) { ... }

Widget _buildItemWidget(Item item) { ... }
  • querySetCall - function transforming search query into list of items being then rendered in ListView (required),
  • itemBuilder - function creating Widget object for received item, called during ListView building for each element of the results set (required),
  • loadOnEachChange - boolean value indicating whether querySetCall should be triggered on each query change; if false query set is loaded once user submits query,
  • animateChanges - determines whether ListView's insert and remove operations should be animated.

SearchItem

Specifying this parameter allows to customize how search item should be built and positioned in app bar. It can be either action or menu widget. No matter which of these two is picked, two constructor arguments can be passed:

  • builder - function receiving current BuildContext and returning Widget for action or PopupMenuItem for menu item,
  • gravity - can be one of SearchItemGravity values: start, end or exactly. If no arguments are passed, SearchBar will create default item which is search action icon with start gravity.

SearchItem.action

Search action item
appBar: SearchBar(
  // ...
  searchItem: SearchItem.action(
    builder: (_) => Padding(
      padding: EdgeInsets.all(12.0),
      child: Icon(
        Icons.find_in_page,
        color: Colors.indigoAccent,
      ),
    ),
    gravity: SearchItemGravity.exactly(1),
  ),
)

SearchItem.menu

Search menu item
appBar: SearchBar(
  // ...
  searchItem: SearchItem.menu(
    builder: (_) => PopupMenuItem(
      child: Text("Search  🔍"),
      value: "search",
    ),
    gravity: SearchItemGravity.end,
  ),
)

Also, bear in mind that SearchBar will prevent built item widget from receiving tap events and will begin search action rather than that.

Contributions

Any kind of contribution to the project is welcomed.
Feel free to request new features, report encountered bugs or pull request changes you've made.
To do so, make use of Pull requests and Issues tabs.

[1.0.3]

  • Add initialQuery and autoActive attributes
  • Support interacting with widget's state via SearchBarController
  • Adjust clear query button behavior

[1.0.2]

  • Fix duplicated GlobalKey across multiple pages

[1.0.1] - 09/10/2018

  • Support more adjustable attributes

[1.0.0] - 08/09/2018

  • Release package

[0.0.3] - 08/09/2018

  • Support specifying search item widget and position in AppBar
  • Bug fixes

[0.0.2] - 03/06/2018

  • Update documentation
  • Add dart docs

[0.0.1] - 02/06/2018

  • Implement search bar widget
  • Support query callbacks
  • Support query set loader
  • Include search bar examples

example/README.md

example

Loader search bar example.

Getting Started

For help getting started with Flutter, view our online documentation.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  loader_search_bar: ^1.0.3+1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:loader_search_bar/loader_search_bar.dart';
  
Version Uploaded Documentation Archive
1.0.3+1 Dec 14, 2018 Go to the documentation of loader_search_bar 1.0.3+1 Download loader_search_bar 1.0.3+1 archive
1.0.3 Dec 2, 2018 Go to the documentation of loader_search_bar 1.0.3 Download loader_search_bar 1.0.3 archive
1.0.2 Oct 11, 2018 Go to the documentation of loader_search_bar 1.0.2 Download loader_search_bar 1.0.2 archive
1.0.1 Oct 9, 2018 Go to the documentation of loader_search_bar 1.0.1 Download loader_search_bar 1.0.1 archive
1.0.0+1 Sep 8, 2018 Go to the documentation of loader_search_bar 1.0.0+1 Download loader_search_bar 1.0.0+1 archive
1.0.0 Sep 8, 2018 Go to the documentation of loader_search_bar 1.0.0 Download loader_search_bar 1.0.0 archive
0.0.3 Sep 8, 2018 Go to the documentation of loader_search_bar 0.0.3 Download loader_search_bar 0.0.3 archive
0.0.2+4 Aug 31, 2018 Go to the documentation of loader_search_bar 0.0.2+4 Download loader_search_bar 0.0.2+4 archive
0.0.2+3 Jun 3, 2018 Go to the documentation of loader_search_bar 0.0.2+3 Download loader_search_bar 0.0.2+3 archive
0.0.2+2 Jun 3, 2018 Go to the documentation of loader_search_bar 0.0.2+2 Download loader_search_bar 0.0.2+2 archive

All 13 versions...

Popularity:
Describes how popular the package is relative to other packages. [more]
86
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
93
Learn more about scoring.

We analyzed this package on Dec 14, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.1.0
  • pana: 0.12.7
  • Flutter: 1.0.0

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11
meta 1.1.6
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test