SearchDelegate<T> class Null safety

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!


SearchDelegate({String? searchFieldLabel, TextStyle? searchFieldStyle, InputDecorationTheme? searchFieldDecorationTheme, TextInputType? keyboardType, TextInputAction textInputAction =})
Constructor to be called by subclasses which may specify searchFieldLabel, either searchFieldStyle or searchFieldDecorationTheme, keyboardType and/or textInputAction. Only one of searchFieldLabel and searchFieldDecorationTheme may be non-null.


hashCode int
The hash code for this object.
read-only, inherited
keyboardType TextInputType?
The type of action button to use for the keyboard.
query String
The current query string shown in the AppBar.
read / write
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
searchFieldDecorationTheme InputDecorationTheme?
The InputDecorationTheme used to configure the search field's visuals.
searchFieldLabel String?
The hint text that is shown in the search field when it is empty.
searchFieldStyle TextStyle?
The style of the searchFieldLabel.
textInputAction TextInputAction
The text input action configuring the soft keyboard to a particular action button.
transitionAnimation Animation<double>
Animation triggered when the search pages fades in or out.


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.
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.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
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.


operator ==(Object other) bool
The equality operator.