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>())
posted @ 2024-05-12 23:16  258333  阅读(2)  评论(0编辑  收藏  举报