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 is the main entry point for Flutter Helpers: it 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 
queryandapplyState - Listen to search 
responsesand build the UI disposeof 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
| Parameter | Description | ||
|---|---|---|---|
          
            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
| Parameter | Description | ||
|---|---|---|---|
          
            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
| Parameter | Description | ||
|---|---|---|---|
          
            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
| Parameter | Description | ||
|---|---|---|---|
          
            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
| Parameter | Description | ||
|---|---|---|---|
          
            responses
          
         | 
        
           
                
                type: Stream<FacetSearchResponse>
                
               
          Stream of search responses  | 
      ||
| 
           
Copy
 
       | 
      |||
          
            state
          
         | 
        
           
                
                type: Stream<FacetSearchState>
                
               
          Stream of facet search states  | 
      ||
| 
           
Copy
 
       | 
      |||
Methods
| Parameter | Description | ||
|---|---|---|---|
          
            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
| Parameter | Description | ||
|---|---|---|---|
          
            strategy
          
         | 
        
           
                
                type: MultipleQueriesStrategy
                
               
              
                
                  default: None
                
               
              
                
                    Optional
                
               
          
  | 
      ||
| 
           
Copy
 
       | 
      |||
Methods
| Parameter | Description | ||
|---|---|---|---|
          
            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
 
       | 
      |||