Vic*_*cia 5 android kotlin android-jetpack-compose
在 Jetpack Compose 中,我有一个AndroidView
监听器,它读取传递的状态,如下所示:
@Composable
fun Scanner(
state: ScannerState,
modifier: Modifier = Modifier,
) {
AndroidView(
modifier = modifier,
factory = { context ->
ScannerView(context).apply {
onButtonClicked = {
if (state.isLoading) <-- HERE I READ THE STATE
...
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
当状态更新和视图重构时就会出现问题。如果onButtonClicked
此后再次调用回调,它将保留初始状态,并且不会读取该函数收到的最后更新状态。
factory
仅在创建视图时被调用一次。这就是 lambda 仅捕获初始状态的原因。
要传递更新的状态,您需要使用update
参数,如下所示:
AndroidView(
modifier = modifier,
factory = { context ->
ScannerView(context)
},
update = { view
view.onButtonClicked = {
if (state.isLoading) {
...
}
}
},
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1131 次 |
最近记录: |