Tower Guidev2
08/09/2022, 8:28 AMandroidx.compose.material3.ExposedDropdownMenuBox
to implement an Autosuggest drop down listTower Guidev2
08/09/2022, 8:33 AMExposedDropdownMenuBox
?Tower Guidev2
08/09/2022, 8:33 AM@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Greeting(viewModel: MviViewModel<Reactionable<*>, Actionable>, names: List<String>) {
val suggestions by remember { mutableStateOf(names) }
var expanded by remember { mutableStateOf(true) }
var selectedOptionText by remember { mutableStateOf("") }
LaunchedEffect(key1 = selectedOptionText) {
if (selectedOptionText.trim().length > 2) viewModel.send(Suggest(selectedOptionText))
}
Column(
modifier = Modifier.fillMaxSize()
) {
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded },
) {
TextField(
value = selectedOptionText,
onValueChange = {
selectedOptionText = it
},
label = { Text("Label") },
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
colors = ExposedDropdownMenuDefaults.textFieldColors(),
)
if (suggestions.isNotEmpty()) {
ExposedDropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
suggestions.forEach { selectionOption ->
DropdownMenuItem(
text = { Text(selectionOption) },
onClick = {
selectedOptionText = selectionOption
expanded = false
}
)
}
}
}
}
}
}