Jee*_*cha 3 android android-jetpack-compose
我们可以创建自己的custom rememberState喜欢的吗rememberModalButtomSheetSTate()?另外,我想将可组合项存储在 RememberState 中,并能够使用此状态设置和访问可组合项。喜欢rememberState.setCompose = @Composable和rememberState.getComposable
是的,您可以创建容易记住的函数,例如rememberModalBottomSheetState或rememberLazyListState。创建存储多种数据类型的自定义记忆函数MutableState很常见。放置可组合项并不常见,至少到目前为止我还没有见过,但它是可行的。
class MyState internal constructor() {
var state1 by mutableStateOf(0)
var state2 by mutableStateOf(0)
var someValue = 0
}
Run Code Online (Sandbox Code Playgroud)
内部构造函数是可选的,它用于限制开发人员只能通过remember函数创建实例。
// you can add params to pass to MyState instance or keys to reset remember
@Composable
fun rememberMyState(key1: Any?): MyState {
return remember(key1) {
MyState()
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想添加可组合项,一种方法是
class MyState internal constructor() {
var state1 by mutableStateOf(0)
var state2 by mutableStateOf(0)
var someValue = 0
// this can also be SnapshoStateList to trigger recomposition when you add, remove or update list with new item instance
val list = mutableListOf<@Composable () -> Unit>()
}
Run Code Online (Sandbox Code Playgroud)
用法
val myState = rememberMyState(key1 = Unit)
myState.list.add {
Box(
modifier = Modifier
.fillMaxWidth()
.height(100.dp)
.background(Color.Red)
)
}
myState.list.add {
Box(
modifier = Modifier
.fillMaxWidth()
.height(100.dp)
.background(Color.Yellow)
)
}
Column(modifier = Modifier.fillMaxSize()) {
myState.list.forEach{
it.invoke()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |