Hits Searcher
HitsSearcher( String applicationID, String apiKey, String indexName, // Optional parameters bool disjunctiveFacetingEnabled, Duration debounce, ) HitsSearcher.create( String applicationID, String apiKey, SearchState state, // Optional parameters bool disjunctiveFacetingEnabled, Duration debounce, ) FacetSearcher( String applicationID, String apiKey, String indexName, String facet, // Optional parameters Duration debounce, ) FacetSearcher.create( String applicationID, String apiKey, FacetSearchState state, // Optional parameters Duration debounce, ) MultiSearcher( String applicationID, String apiKey, // Optional parameters EventTracker eventTracker )
About this widget
This component handles search requests and manages search sessions.
HitsSearcher
component has the following behavior:
- Distinct state changes (including initial state) will trigger a search operation
- State changes are debounced
- On a new search request, any previous ongoing search calls will be cancelled
Algolia for Flutter comes with these searchers:
HitsSearcher
: searches a single index.FacetSearcher
: searches for facet values.MultiSearcher
: aggregates the hits and facet searchers. This is useful for building a federated search, or query suggestions.
Examples
- Create a
HitsSearcher
- Update search state with
query
andapplyState
- Listen to search
responses
and build the UI dispose
of underlying resources
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class SearchScreen extends StatefulWidget {
const SearchScreen({super.key});
@override
State<SearchScreen> createState() => _SearchScreenState();
}
class _SearchScreenState extends State<SearchScreen> {
// 1. Create a Hits Searcher
final hitsSearcher = HitsSearcher(
applicationID: 'YourApplicationID',
apiKey: 'YourSearchOnlyApiKey',
indexName: 'YourIndexName',
);
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
// 2. Run your search operations
title: TextField(
onChanged: (input) => hitsSearcher.query(input),
decoration: const InputDecoration(
hintText: 'Search...',
prefixIcon: Icon(Icons.search),
fillColor: Colors.white,
filled: true,
),
),
),
// 3.1 Listen to search responses
body: StreamBuilder<SearchResponse>(
stream: hitsSearcher.responses,
builder: (_, snapshot) {
if (snapshot.hasData) {
final response = snapshot.data;
final hits = response?.hits.toList() ?? [];
// 3.2 Display your search hits
return ListView.builder(
itemCount: hits.length,
itemBuilder: (_, i) => ListTile(title: Text(hits[i]['title'])),
);
} else {
return const Center(child: CircularProgressIndicator());
}
},
),
);
@override
void dispose() {
super.dispose();
// 4. Release underling resources
hitsSearcher.dispose();
}
}
HitsSearcher
applicationID
|
type: String
Required
The ID of your application. |
||
Copy
|
|||
apiKey
|
type: String
Required
Your application’s Search-only API key. |
||
Copy
|
|||
indexName
|
type: String
Required
The index to search into. |
||
Copy
|
|||
state
|
type: SearchState
Required
Initial search state. |
||
Copy
|
|||
disjunctiveFacetingEnabled
|
type: bool
default: true
Optional
Is disjunctive faceting enabled? |
||
Copy
|
|||
debounce
|
type: Duration
default: Duration(milliseconds: 100)
Optional
Search operation debounce duration. |
||
Copy
|
Fields
responses
|
type: Stream<SearchResponse>
Stream of search responses |
||
Copy
|
|||
state
|
type: Stream<SearchState>
Stream of search states |
||
Copy
|
|||
eventTracker
|
type: HitsEventTracker
HitsEventTracker instance responsible for handling and sending user events related to search interactions, such as clicks, conversions, and views. These events help to personalize the user’s search experience by providing insights into user behavior. eventTracker is automatically integrated with the HitsSearcher to track events when users interact with the search results. |
||
Copy
|
Methods
query
|
Triggers a search operation with given search query |
||
Copy
|
|||
applyState
|
Applies a search state configuration and triggers a search operation |
||
Copy
|
|||
snapshot
|
Gets the latest |
||
Copy
|
|||
dispose
|
Releases all underlying resources |
||
Copy
|
FacetSearcher
applicationID
|
type: String
Required
The ID of your application. |
||
Copy
|
|||
apiKey
|
type: String
Required
Your application’s Search-only API key. |
||
Copy
|
|||
indexName
|
type: String
Required
The index to search into. |
||
Copy
|
|||
facet
|
type: String
Required
The facet name to search into when doing search for facet values. |
||
Copy
|
|||
state
|
type: FacetSearchState
Required
Initial facet search state. |
||
Copy
|
|||
debounce
|
type: Duration
default: Duration(milliseconds: 100)
Optional
Search operation debounce duration. |
||
Copy
|
Fields
responses
|
type: Stream<FacetSearchResponse>
Stream of search responses |
||
Copy
|
|||
state
|
type: Stream<FacetSearchState>
Stream of facet search states |
||
Copy
|
Methods
query
|
Triggers a search operation with given search query |
||
Copy
|
|||
applyState
|
Applies a search state configuration and triggers a search operation |
||
Copy
|
|||
snapshot
|
Gets the latest |
||
Copy
|
|||
dispose
|
Releases all underlying resources |
||
Copy
|
MultiSearcher
strategy
|
type: MultipleQueriesStrategy
default: None
Optional
|
||
Copy
|
Methods
dispose
|
Releases all underlying resources |
||
Copy
|
|||
addHitsSearcher
|
Adds a new HitsSearcher to the multi-searcher. |
||
Copy
|
|||
addFacetSearcher
|
Adds a new FacetSearcher to the multi-searcher. |
||
Copy
|