我想使用现有地图初始化可观察地图。 我试过了
val myMap by rememberSaveable { mutableStateOf(otherMap) }
otherMap 是一个 MutableMap
我试过了
val myMap by rememberSaveable { mutableStateMapOf<MyEnum, Boolean>(otherMap) }
并且无法编译。 我需要 myMap 是可变的,即
myMap[key] = value
我认为你应该创建自己的可组合项来反映 RememberSaveable 函数的逻辑
@Composable
fun <K : Any, V : Any> rememberMutableStateMapOf(vararg pairs: Pair<K, V>): SnapshotStateMap<K, V> {
return rememberSaveable(saver = snapshotStateMapSaver()) {
pairs.toList().toMutableStateMap()
}
}
private fun <K : Any, V : Any> snapshotStateMapSaver() = listSaver<SnapshotStateMap<K, V>, Pair<K, V>>(
save = { stateMap -> stateMap.toList() },
restore = { it.toMutableStateMap() }
)
然后像平常一样调用它:
val expandedStates = rememberMutableStateMapOf<String,Boolean>()
希望有帮助!