Como posso atualizar os resultados do SearchBar com cada tecla pressionada no teclado? Não há variáveis value e valuechanged nele. Aqui está a documentação.
Este é o exemplo:
@Composable
fun DockedSearchBarScaffold() {
val textFieldState = rememberTextFieldState()
val searchBarState = rememberSearchBarState()
val scope = rememberCoroutineScope()
val scrollBehavior = SearchBarDefaults.enterAlwaysSearchBarScrollBehavior()
val inputField =
@Composable {
SearchBarDefaults.InputField(
modifier = Modifier,
searchBarState = searchBarState,
textFieldState = textFieldState,
onSearch = {
scope.launch {
searchBarState.animateToCollapsed()
}
},
placeholder = { Text("Search...") },
leadingIcon = {
if (searchBarState.currentValue == SearchBarValue.Expanded) {
IconButton(
onClick = { scope.launch { searchBarState.animateToCollapsed() } }
) {
Icon(Icons.AutoMirrored.Default.ArrowBack, contentDescription = "Back")
}
} else {
Icon(Icons.Default.Search, contentDescription = null)
}
}
)
}
TopSearchBar(
scrollBehavior = scrollBehavior,
state = searchBarState,
inputField = inputField,
)
ExpandedDockedSearchBar(
state = searchBarState,
inputField = inputField,
) {
SearchResults(
busStops = emptyList(),
onResultClick = { result ->
textFieldState.setTextAndPlaceCursorAtEnd(result)
scope.launch { searchBarState.animateToCollapsed() }
}
)
}
}
Você não precisa fazer nada para atualizar o
SearchResults
Composable em cada pressionamento de tecla. A única coisa que falta no seu código são dados reais e umafilter
operação usando otextFieldState.text
.Quando você insere um caractere no
SearchBarDefaults.InputField
, ele será recomposto. Conforme você passa oinputField
para oExpandedDockedSearchBar
, ele será automaticamente recomposto também e afilter
expressão será reavaliada.Dê uma olhada no código a seguir:
Saída:
Use
LaunchedEffect
withtextFieldState.text
para atualizar os resultados da pesquisa a cada pressionamento de tecla.Código atualizado:
LaunchedEffect(textFieldState.text)
aciona uma recomposição sempre que o conteúdo do campo de texto muda.performSearch(textFieldState.text)
: Simula a pesquisa e atualiza os resultados da pesquisa.SearchResults List
: Atualiza automaticamente a cada pressionamento de tecla.Isso garante que os resultados da pesquisa sejam atualizados dinamicamente conforme o usuário digita. 🚀 Avise-me se precisar de modificações!