Compose焦點移動問題
焦點設置必須按照以下順序,否則會有問題
Modifier 說明 必須順序
focusRequester() 注冊焦點請求器 放在 .focusable() 之前
onFocusChanged {} 監(jiān)聽焦點狀態(tài)變化 放在 .focusable() 之前
focusable() 添加焦點節(jié)點 必須在最后!
示例如下:
@Composable
fun Test(modifier: Modifier = Modifier) {
val focusRequester = remember { FocusRequester() }
val focusRequester2 = remember { FocusRequester() }
var color by remember { mutableStateOf(Color.White) }
var color2 by remember { mutableStateOf(Color.White) }
Column {
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Text(
"AAA",
modifier = Modifier
.size(200.dp)
.background( color)
.focusRequester(focusRequester)
.onFocusChanged {
Log.d(TAG, "Test: AAA ${it.isFocused}")
color = if (it.isFocused) Color.Red else Color.White
}
.focusable(true)
.clickable {
focusRequester.requestFocus()
}
)
Spacer(modifier = Modifier.height(20.dp))
Text(
"BBB",
modifier = Modifier
.size(200.dp)
.background(color = color2)
.focusRequester(focusRequester2)
.onFocusChanged {
color2 = if (it.isFocused) Color.Red else Color.White
}
.focusable(true)
.clickable {
focusRequester2.requestFocus()
})
}
}
Compose 打印日志出現(xiàn)死循環(huán)問題
原本期望記錄控制臺打印的日志,在compose 方法體中直接調(diào)用類似記錄日志更新頁面方法,如果直接按照注釋部分的代碼進行拼接,會出現(xiàn)重組死循環(huán)問題 compose 不要直接調(diào)用更新狀態(tài)的方法,使用LaunchedEffect等副作用
logContent.value = logContent.value + "\n" + "${Date().toString().substring(10)} $content"