5.12
改进昨天的代码
//选择地铁系统 组件 点击后 会有 下拉列表 可供选择
@Composable
fun MetroSystemSelection(
metroSystemList: List<MetroSystem>,
selectedMetroSystem: MetroSystem,
selectMetroSystem: (MetroSystem) -> Unit
) {
var expanded by rememberSaveable { mutableStateOf(false) }
Column {
OutlinedButton(
onClick = { expanded = true },
) {
//判断 是否已经选择了某个城市的地铁
if (selectedMetroSystem.systemName.isEmpty()) {
//没有选择则使用 默认名字
Text(text = stringResource(id = R.string.select_metro_system))
} else {
//选择之后展示选择的 地铁系统
Text(text = selectedMetroSystem.systemName)
}
}
DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
metroSystemList.forEach { system ->
DropdownMenuItem(onClick = {
//保存选择的 地铁名称 和 id
selectMetroSystem(system)
expanded = false
}, text = {
Text(text = system.systemName)
})
}
}
}
}
整理了一下 模型
//保存所有的 地铁名称 和 id
val metroSystems = mutableStateOf(emptyList<MetroSystem>())
//用于保存选择后的 地铁名称 和 id
val selectedMetroSystem = mutableStateOf(MetroSystem("", ""))
//保存查询到的所有的 线路站点信息
val metroStations = mutableStateOf(emptyList<MetroStation>())
//MutableState 是一个表示可变状态的接口,它允许我们在 Composable 函数中修改状态,并且能够触发 UI 的重新组合。
//mutableStateOf 是一个函数,它用于创建一个可变状态,并且初始化状态的初始值
//保存搜索的 表单信息
val searchRouteFormUiState = mutableStateOf(SearchRouteFormUiState())
//保存选择的 要查询的线路
val selectedMetroLine = mutableStateOf(MetroLine("", "", ""))
//保存查询到的线路
val metroLines = mutableStateOf(emptyList<MetroLine>())