我正在尝试将可分割对象的可变列表添加到我的可组合项中。我还希望能够向其中添加对象和从中删除对象。
目前我正在使用这样的东西:
val names = remember { mutableStateListOf<String>() }
names.add("Bill")
names.remove("Bill")
Run Code Online (Sandbox Code Playgroud)
现在我希望这个列表在配置更改后继续存在,因此使用rememberSaveable. 也许是这样的:
val names = rememberSaveable { mutableStateListOf<String>() }
names.add("Bill")
names.remove("Bill")
Run Code Online (Sandbox Code Playgroud)
但这不起作用,它会抛出以下异常:
androidx.compose.runtime.snapshots.SnapshotStateList 无法使用当前的 SaveableStateRegistry 进行保存。默认实现仅支持可以存储在 Bundle 内的类型。请考虑为此类实现自定义 Saver 并将其传递给 RememberSaveable()。
这意味着SnapshotStateList( 的结果mutableStateListOf)不可保存。
到目前为止,我能想到几种解决这个问题的方法:
SnapshotStateList。val namesState = rememberSaveable { mutableStateOf(listOf<String>()) }。这确实可以完美地工作,但是更新列表需要设置值,这既慢又不方便(例如,namesState.value = namesState.value + "Joe"仅添加单个元素)。对于看似很小的任务来说,这两种方法似乎都太复杂了。我想知道做我想做的事的最好方法是什么。谢谢。