在我找到的示例(此处或此处)中,我看到它derivedStateOf始终包装在一个remember块中。检查重组计数,我没有看到两者之间的区别
val foo = remember { derivedStateOf { someState } }
Run Code Online (Sandbox Code Playgroud)
和
val foo = derivedStateOf { someState }
Run Code Online (Sandbox Code Playgroud)
谁能给我举一个结果会有所不同的例子吗?
编辑:所以我在这个例子中得到了不同的结果:
@Composable
fun Test() {
var count by remember {
mutableStateOf(0)
}
val moreThanOne = derivedStateOf {
Log.d("foo", "Calculate")
count > 1
}
Log.d("foo", "Read")
moreThanOne.value
Button(
onClick = {
Log.d("foo", "Clicked")
count += 1
}
) {
Text(text = "Increment")
}
}
Run Code Online (Sandbox Code Playgroud)
单击按钮两次会显示以下日志:
Read
Calculate
Clicked
Calculate
Clicked
Calculate
Read
Calculate …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-ui
我是 Android 撰写新手。有没有办法使用 ImeAction 从键盘单击“完成”键来关闭对话框?
目前,下面的代码明确关注“完成”的单击以及如何关闭对话框:
TextField(
value = text,
onValueChange = {
text = it
},
singleLine = true,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusRequester.requestFocus() }
),
modifier = Modifier.onKeyEvent {
if (it.nativeKeyEvent.keyCode == KeyEvent.KEYCODE_ENTER){
focusRequester.requestFocus()
true
}
false
}
)
Run Code Online (Sandbox Code Playgroud) android ime kotlin android-jetpack-compose android-jetpack-compose-ui