Facet List
FacetList( Stream<List<Facet>> facetsStream, SelectionState state, String attribute, // Optional parameters SelectionMode selectionMode, bool persistent, FilterEventTracker? eventTracker, ) FacetList.create( Stream<List<Facet>> facetsStream, SelectionState state, String attribute, // Optional parameters SelectionMode selectionMode, bool persistent, FilterEventTracker? eventTracker, }
About this widget
FacetList
is a filtering component that displays facets, and lets users refine their search results by filtering on specific values.
Requirements
You need to add the attribute
you provide to the widget in attributes for faceting, either on the dashboard or using the attributesForFaceting
parameter with the API.
Examples
Create facet list
Create FacetList
with given HitsSearcher
and FilterState
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Create a FilterState
final filterState = FilterState();
// Create a HitsSearcher
final hitsSearcher = HitsSearcher(
applicationID: 'YourApplicationID',
apiKey: 'YourSearchOnlyApiKey',
indexName: 'YourIndexName',
)..connectFilterState(filterState);
// Create a FacetList
final facetList = hitsSearcher.buildFacetList(
filterState: filterState,
attribute: 'YourAttribute',
);
Display facets
Get selectable facets changes by listening to facets
submissions and call toggle
to selected or deselect a facet value:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
StreamBuilder<List<SelectableFacet>>(
stream: facetList.facets, // Listen to `facets` stream
builder: (context, snapshot) {
if (snapshot.hasData) {
final facets = snapshot.data ?? [];
return ListView.builder(
itemCount: facets.length,
itemBuilder: (BuildContext context, int index) {
final selectable = facets[index];
final facet = selectable.item;
return ListTile(
title: Text('${facet.value} (${facet.count})'),
trailing: selectable.isSelected ? const Icon(Icons.check) : null,
onTap: () => facetList.toggle(facet.value), // Toggle a facet value on tap
);
},
);
} else {
return const LinearProgressIndicator();
}
},
);
Dispose
Call dispose
to release underlying resources:
1
facetList.dispose();
Parameters
Parameter | Description |
---|---|
facetsStream
|
type: Stream<List<Facet>>
Required
Stream of facets usually fetched from |
state
|
type: SelectionState
Required
Manages the facet selection state, usually handled by |
attribute
|
type: String
Required
The attribute to filter. |
operator
|
type: FilterOperator
default: FilterOperator.or
Optional
Filters operator, which can either be |
selectionMode
|
type: SelectionMode
default: SelectionMode.multiple
Optional
Whether the list can have |
persistent
|
type: bool
default: false
Optional
When |
Fields
Parameter | Description | ||
---|---|---|---|
facets
|
type: Stream<List<SelectableFacet>>
A stream of facets with their selection status. |
||
Copy
|
|||
eventTracker
|
type: FilterEventTracker
FilterEventTracker instance responsible for sending Insights events related to user interactions with facets, such as clicking, viewing, and converting filters. With the eventTracker, you can track user’s behavior, which can help you personalize their search experience. |
||
Copy
|
Methods
Parameter | Description | ||
---|---|---|---|
toggle
|
Select or deselect the provided facet value depending on the current selection state. |
||
Copy
|
|||
snapshot
|
Gets the latest |
||
Copy
|
|||
dispose
|
Releases all underlying resources |
||
Copy
|