为什么 Android Studio Arctic Fox 将 rememberSaveable 变量标记为未使用?

Why is rememberSaveable variable flagged as unused by Android Studio Arctic Fox?

Android Studio Arctic Fox(补丁 3)标记,“从未使用以下可组合项中分配给 var isVisited: Boolean 的值 true”:

@Composable
fun MainView(navController: NavController) {
    var isVisited by rememberSaveable { mutableStateOf(false) }

    if (!isVisited) {
        isVisited = true                    // never used?
        navController.navigate("NextView")
    }

    Button(onClick = { navController.navigate("NextView") }) {
        Text(text = "MainView")
    }
}

虽然它显然按预期工作:防止 MainView 在随后访问 MainView 时导航到 NextView。这是 NextView 的定义:

@Composable
fun NextView(navController: NavController) {
    Button(onClick = { navController.popBackStack() }) {
        Text(text = "NextView")
    }
}

Android Studio 是否根本无法识别跨重组的变量使用?或者是否有更惯用的方式在重组时有条件地执行代码?感谢您的任何回答或指示。

我正在为 API 级别 31 使用 Kotlin 1.5.31、Compose 1.1.0-alpha06、navigation-compose 2.4.0-alpha04、lifecycle-runtime-ktx 2.4.0-rc01 进行构建,尽管我在 API 级别 30、Kotlin 1.5.21、Compose 1.0.1、navigation-compose 2.4.0-alpha04、lifecycle-runtime-ktx 2.3.1 上看到了相同的行为。 (如果有帮助,我很乐意分享我的 MainActivity 我设置 NavHost 的地方以及这两个视图或其他依赖项和系统信息。)

行首:您可以安全地忽略该警告,因为警告的目的是防止开发人员使用不必要的系统资源。由于一些内部荧光笔逻辑错误(也许?),它会将一个有用的变量标识为未使用的变量,但由于您知道您正在代码流中积极使用它,因此您可以放弃该警告。如果它打扰了你,只需用注释抑制它。

正文内容:-

不用担心,它有时会发生。对我来说似乎没有错误,只需尝试删除该行,然后在尽可能多地使用代码完成的同时重新添加它。如果这没有帮助,只需编译项目,然后查看构建日志。如果它没有显示警告:var 'isVisited' is never used,那么您可以放心,因为这将是工作室代码突出显示中的错误。只要您没有收到任何构建时警告,请确保它不会对性能或其他方面造成任何威胁。