0

Android Studio Arctic Fox (Patch 3) flags, "The value trueassignment to var isVisited: Booleanin the following composable is never used":

@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导航到. 这是 的定义:NextViewMainViewNextView

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

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

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

4

1 回答 1

1

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

正文内容:-

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

于 2021-10-19T04:54:08.757 回答