标签: android-jetpack-compose-ui

是否记得有没有派生状态

在我找到的示例(此处此处)中,我看到它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

4
推荐指数
1
解决办法
1061
查看次数

Android Compose:有什么方法可以在单击键盘上的“完成”键时关闭对话框

我是 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

3
推荐指数
1
解决办法
9367
查看次数