SearchController class Null safety

The SearchController class can be used to bind to different kinds of search UI widgets.

For example,

  • a category filter widget,
  • a search bar widget,
  • a price range widget,
  • a location filter widget,
  • a widget to render the search results.

Constructors

SearchController(String index, String url, String credentials, String id, {AppbaseSettings? appbaseConfig, TransformRequest? transformRequest, TransformResponse? transformResponse, Map<String, String>? headers, QueryType? type, Map<String, dynamic>? react, String? queryFormat, dynamic dataField, String? categoryField, String? categoryValue, String? nestedField, int? from, int? size, SortType? sortBy, String? aggregationField, int? aggregationSize, Map? after, bool? includeNullValues, List<String>? includeFields, List<String>? excludeFields, dynamic fuzziness, bool? searchOperators, bool? highlight, dynamic highlightField, Map? customHighlight, int? interval, List<String>? aggregations, String? missingLabel, bool? showMissing, bool? enableSynonyms, String? selectAllLabel, bool? pagination, bool? queryString, Map defaultQuery(SearchController searchController)?, Map customQuery(SearchController searchController)?, Future beforeValueChange(dynamic value)?, void onValueChange(String? next, {String? prev})?, void onResults(List<Map>? next, {List<Map>? prev})?, void onAggregationData(List<Map>? next, {List<Map>? prev})?, void onError(dynamic error)?, void onRequestStatusChange(String? next, {String? prev})?, void onQueryChange(Map? next, {Map? prev})?, bool? enablePopularSuggestions, int? maxPopularSuggestions, bool? showDistinctSuggestions, bool? preserveResults, String? distinctField, Map? distinctFieldConfig, dynamic value, bool clearOnQueryChange = false, List<Map>? results})

Properties

after Map?
This property can be used to implement the pagination for aggregations. [...]
read / write
aggregationData ↔ Aggregations?
An object that contains the aggregations data for QueryType.term queries.
read / write
aggregationField String?
It enables you to get DISTINCT results (useful when you are dealing with sessions, events, and logs type data). [...]
read / write
aggregations List<String>?
It helps you to utilize the built-in aggregations for QueryType.range type of widgets directly, valid values are: [...]
read / write
aggregationSize int?
To set the number of buckets to be returned by aggregations. [...]
final
appbaseConfig AppbaseSettings?
It allows you to customize the analytics experience when appbase.io is used as a backend.
read / write, inherited
appbaseSettings AppbaseSettings?
represnts the current appbase settings
read-only
beforeValueChange → (Future Function?(dynamic value)?)
It is a callback function which accepts component's future value as a parameter and returns a Future. [...]
final
categoryField String?
Index field mapped to the category value.
read / write
categoryValue String?
This is the selected category value. It is used for informing the search result.
read / write
clearOnQueryChange bool
When set to true, the dependent controller's (which is set via react prop) value would get cleared whenever the query changes. [...]
read / write
componentQuery Map
to get the raw query based on the current state
read-only
credentials String
Basic Auth credentials if required for authentication purposes. [...]
read / write, inherited
customHighlight Map?
It can be used to set the custom highlight settings. [...]
read / write
customQuery ↔ (Map Function?(SearchController searchController)?)
It takes SearchController instance as parameter and returns the query to be applied to the dependent widgets by react prop, as defined in Elasticsearch Query DSL. [...]
read / write
dataField ↔ dynamic
The index field(s) to be connected to the component’s UI view. [...]
read / write
defaultQuery ↔ (Map Function?(SearchController searchController)?)
It is a callback function that takes the SearchController instance as parameter and returns the data query to be applied to the source component, as defined in Elasticsearch Query DSL, which doesn't get leaked to other components. [...]
read / write
distinctField String?
This prop returns only the distinct value documents for the specified field. It is equivalent to the DISTINCT clause in SQL. It internally uses the collapse feature of Elasticsearch. You can read more about it over here - https://www.elastic.co/guide/en/elasticsearch/reference/current/collapse-search-results.html
final
distinctFieldConfig Map?
This prop allows specifying additional options to the distinctField prop. Using the allowed DSL, one can specify how to return K distinct values (default value of K=1), sort them by a specific order, or return a second level of distinct values. distinctFieldConfig object corresponds to the inner_hits key's DSL. You can read more about it over here - https://www.elastic.co/guide/en/elasticsearch/reference/current/collapse-search-results.html [...]
final
enablePopularSuggestions bool?
It can be useful to curate search suggestions based on actual search queries that your users are making. [...]
read / write
enableSynonyms bool?
This property can be used to control (enable/disable) the synonyms behavior for a particular query. [...]
read / write
error ↔ dynamic
Represents the error response returned by elasticsearch.
read / write
excludeFields List<String>?
read / write
from int?
To define from which page to start the results, it is important to implement pagination.
read / write
fuzziness ↔ dynamic
Useful for showing the correct results for an incorrect search parameter by taking the fuzziness into account. [...]
read / write
hashCode int
The hash code for this object. [...]
read-only, inherited
headers Map<String, String>?
Set custom headers to be sent with each server request as key/value pairs.
read / write, inherited
highlight bool?
To define whether highlighting should be enabled in the returned results. [...]
read / write
highlightField ↔ dynamic
If highlighting is enabled, this property allows specifying the fields which should be returned with the matching highlights. [...]
read / write
id String
A unique identifier of the component, can be referenced in other widgets' react prop to reactively update data.
read / write
includeFields List<String>?
read / write
includeNullValues bool?
If you have sparse data or documents or items not having the value in the specified field or mapping, then this prop enables you to show that data.
read / write
index String
Refers to an index of the Elasticsearch cluster. [...]
read / write, inherited
interval int?
To set the histogram bar interval for QueryType.range type of widgets, applicable when aggregations value is set to ["histogram"]. [...]
read / write
maxPopularSuggestions int?
It can be used to configure the size of popular suggestions. [...]
read / write
missingLabel String?
It allows you to specify a custom label to show when showMissing is set to true. [...]
read / write
nestedField String?
Sets the nested field path that allows an array of objects to be indexed in a way that can be queried independently of each other. [...]
read / write
onAggregationData → (void Function?(List<Map>? next, {List<Map>? prev})?)
It can be used to listen for the aggregationData property changes.
final
onError → (void Function?(dynamic error)?)
It gets triggered in case of an error while fetching results.
final
onQueryChange → (void Function?(Map? next, {Map? prev})?)
It is a callback function which accepts widget's prevQuery and nextQuery as parameters. [...]
final
onRequestStatusChange → (void Function?(String? next, {String? prev})?)
It can be used to listen for the request status changes.
final
onResults → (void Function?(List<Map>? next, {List<Map>? prev})?)
It can be used to listen for the results changes.
final
onValueChange → (void Function?(String? next, {String? prev})?)
It is called every-time the widget's value changes. [...]
final
pagination bool?
This property allows you to implement the pagination for QueryType.term type of queries. [...]
read / write
preserveResults bool?
It set to true then it preserves the previously loaded results data that can be used to persist pagination or implement infinite loading.
read / write
query List<Map>?
returns the last query executed by the widget
read-only
queryFormat String?
Sets the query format, can be or or and. [...]
read / write
queryId String
represents the query id to track Appbase analytics
read-only
queryString bool?
If set to true than it allows you to create a complex search that includes wildcard characters, searches across multiple fields, and more. [...]
read / write
react Map<String, dynamic>?
It is useful for components whose data view should reactively update when on or more dependent components change their states. [...]
read / write
recentSearches List<Suggestion>?
A list of recent searches as suggestions.
read / write
requestPending bool
Useful for getting the status of the API, whether it has been executed or not
read-only
requestStatus RequestStatus?
It represents the current status of the request.
read / write
results Results?
It is an object that represents the elasticsearch query response.
read / write
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
searchOperators bool?
If set to true, then you can use special characters in the search query to enable the advanced search. [...]
read / write
selectAllLabel String?
This property allows you to add a new property in the list with a particular value in such a way that when selected i.e value is similar/contains to that label(selectAllLabel) then QueryType.term query will make sure that the field exists in the results.
read / write
showDistinctSuggestions bool?
To display one suggestion per document. [...]
read / write
showMissing bool?
When set to true then it also retrieves the aggregations for missing fields. [...]
read / write
size int?
Number of suggestions and results to fetch per request.
read / write
sortBy SortType?
Sorts the results by either SortType.asc, SortType.desc or SortType.count order. [...]
read / write
stateChanges ↔ Observable
A subject to track state changes and update listeners.
read / write
suggestions List<Suggestion>
can be used to get the parsed suggestions from the results. If enablePopularSuggestions property is set to true then the popular suggestions will get appended at the bottom with a property in source object named _popular_suggestion as true.
read-only
transformRequest TransformRequest?
Enables transformation of network request before execution. [...]
read / write, inherited
transformResponse TransformResponse?
Enables transformation of search network response before rendering them. [...]
read / write, inherited
type QueryType?
This property represents the type of the query which is defaults to QueryType.search, valid values are QueryType.search, QueryType.term, QueryType.range & QueryType.geo. [...]
read / write
url String
URL for the Elasticsearch cluster.
read / write, inherited
value ↔ dynamic
Represents the value for a particular QueryType. [...]
read / write

Methods

clearResults({Options? options}) → void
to empty results
click(Map<String, int> objects, {bool isSuggestionClick = false, String? queryId}) Future
use this methods to record a search click event
inherited
conversion(List<String> objects, {String? queryId}) Future
use this methods to record a search conversion
inherited
getRecentSearches({RecentSearchOptions? queryOptions, Options? options}) Future<List<Suggestion>>
to get recent searches
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
recordClick(Map<String, int> objects, {bool isSuggestionClick = false}) Future
to record click analytics of a search request. [...]
recordConversions(List<String> objects) Future
to record a search conversion. [...]
setAfter(Map? after, {Options? options}) → void
can be used to set the after property, which is useful while implementing pagination with QueryType.term type of widgets
setCustomQuery(Map customQuery(SearchController), {Options? options}) → void
sets the customQuery property
setDataField(dynamic dataField, {Options? options}) → void
can be used to set the dataField property
setDefaultQuery(Map defaultQuery(SearchController), {Options? options}) → void
to update defaultQuery property
setExcludeFields(List<String> excludeFields, {Options? options}) → void
can be used to set the excludeFields property
setFrom(int from, {Options? options}) → void
sets the from property that is helpful to implement pagination
setFuzziness(dynamic fuzziness, {Options? options}) → void
sets the fuzziness property
setHeaders(Map<String, String> headers) → void
To to set the custom headers
inherited
setIncludeFields(List<String> includeFields, {Options? options}) → void
can be used to set the includeFields property
setParent(SearchBase parent) → void
setQueryID(String queryID) → void
To set the query ID
inherited
setReact(Map<String, dynamic> react, {Options? options}) → void
to update react property
setSize(int size, {Options? options}) → void
sets the size property
setSortBy(SortType sortBy, {Options? options}) → void
to set soryBy property
setValue(dynamic value, {Options? options}) → void
can be used to set the value property
subscribeToStateChanges(SubscriptionFunction fn, List<String>? propertiesToSubscribe) → dynamic
to subscribe the state changes [...]
toString() String
A string representation of this object. [...]
inherited
triggerCustomQuery({Option? options}) Future
can be used to execute queries for the dependent/watcher components.
triggerDefaultQuery({Option? options}) Future
can be used to execute the default query for a particular widget. For examples, [...]
unsubscribeToStateChanges(SubscriptionFunction fn) → dynamic
It is recommended to unsubscribe the callback functions after the component has been unmounted.

Operators

operator ==(Object other) bool
The equality operator. [...]
inherited