SearchDelegate<T> class
abstract
Delegate for showSearch to define the content of the search page.
The search page always shows an AppBar at the top where users can enter their search queries. The buttons shown before and after the search query text field can be customized via SearchDelegate.buildLeading and SearchDelegate.buildActions. Additionally, a widget can be placed across the bottom of the AppBar via SearchDelegate.buildBottom.
The body below the AppBar can either show suggested queries (returned by SearchDelegate.buildSuggestions) or - once the user submits a search - the results of the search as returned by SearchDelegate.buildResults.
SearchDelegate.query always contains the current query entered by the user and should be used to build the suggestions and results.
The results can be brought on screen by calling SearchDelegate.showResults and you can go back to showing the suggestions by calling SearchDelegate.showSuggestions.
Once the user has selected a search result, SearchDelegate.close should be called to remove the search page from the top of the navigation stack and to notify the caller of showSearch about the selected search result.
A given SearchDelegate can only be associated with one active showSearch call. Call SearchDelegate.close before re-using the same delegate instance for another showSearch call.
Handling emojis and other complex characters
It's important to always use characters when dealing with user input text that may contain complex characters. This will ensure that extended grapheme clusters and surrogate pairs are treated as single characters, as they appear to the user.
For example, when finding the length of some user input, use
string.characters.length
. Do NOT use string.length
or even
string.runes.length
. For the complex character "👨👩👦", this
appears to the user as a single character, and string.characters.length
intuitively returns 1. On the other hand, string.length
returns 8, and
string.runes.length
returns 5!
Constructors
- SearchDelegate({String? searchFieldLabel, TextStyle? searchFieldStyle, InputDecorationTheme? searchFieldDecorationTheme, TextInputType? keyboardType, TextInputAction textInputAction = TextInputAction.search, bool autocorrect = true, bool enableSuggestions = true})
-
Constructor to be called by subclasses which may specify
searchFieldLabel
, eithersearchFieldStyle
orsearchFieldDecorationTheme
,keyboardType
and/ortextInputAction
. Only one ofsearchFieldLabel
andsearchFieldDecorationTheme
may be non-null.
Properties
- autocorrect → bool
-
Whether to enable autocorrection.
final
- automaticallyImplyLeading ↔ bool?
-
Controls whether we should try to imply the leading widget if null.
getter/setter pair
- enableSuggestions → bool
-
Whether to show input suggestions as the user types.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- keyboardType → TextInputType?
-
The type of action button to use for the keyboard.
final
- leadingWidth ↔ double?
-
Defines the width of AppBar.leading widget.
getter/setter pair
- query ↔ String
-
The current query string shown in the AppBar.
getter/setter pair
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- searchFieldDecorationTheme → InputDecorationTheme?
-
The InputDecorationTheme used to configure the search field's visuals.
final
- searchFieldLabel → String?
-
The hint text that is shown in the search field when it is empty.
final
- searchFieldStyle → TextStyle?
-
The style of the searchFieldLabel.
final
- textInputAction → TextInputAction
-
The text input action configuring the soft keyboard to a particular action
button.
final
-
transitionAnimation
→ Animation<
double> -
Animation triggered when the search pages fades in or out.
no setter
Methods
-
appBarTheme(
BuildContext context) → ThemeData - The theme used to configure the search page.
-
buildActions(
BuildContext context) → List< Widget> ? - Widgets to display after the search query in the AppBar.
-
buildBottom(
BuildContext context) → PreferredSizeWidget? - Widget to display across the bottom of the AppBar.
-
buildFlexibleSpace(
BuildContext context) → Widget? - Widget to display a flexible space in the AppBar.
-
buildLeading(
BuildContext context) → Widget? - A widget to display before the current query in the AppBar.
-
buildResults(
BuildContext context) → Widget - The results shown after the user submits a search from the search page.
-
buildSuggestions(
BuildContext context) → Widget - Suggestions shown in the body of the search page while the user types a query into the search field.
-
close(
BuildContext context, T result) → void - Closes the search page and returns to the underlying route.
-
dispose(
) → void - Releases the resources.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
showResults(
BuildContext context) → void - Transition from the suggestions returned by buildSuggestions to the query results returned by buildResults.
-
showSuggestions(
BuildContext context) → void - Transition from showing the results returned by buildResults to showing the suggestions returned by buildSuggestions.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited