在 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
...
}
}
}
},
當狀態更新和視圖重構時,問題就出現了。如果在此onButtonClicked之后再次呼叫回呼,它會保持初始狀態,并且不會讀取此函式接收到的最后更新狀態。
uj5u.com熱心網友回復:
factory創建視圖時,只會呼叫一次。這就是 lambda 只捕獲初始狀態的原因。
要傳遞更新的狀態,您需要使用update引數,如下所示:
AndroidView(
modifier = modifier,
factory = { context ->
ScannerView(context)
},
update = { view
view.onButtonClicked = {
if (state.isLoading) {
...
}
}
},
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/361545.html
