小编Ber*_*çci的帖子

Android Gradle Kotlin Dsl 中未解决的参考问题

我将我的 gradle 文件从 groovy 迁移到 kotlin dsl。一切正常,但从另一个 kotlin 文件将值导入到 gradle 时出现问题。我可以导入变量并且自动完成工作正常,但是当我构建项目时,它给了我未解决的参考错误。感谢任何帮助。

摇篮版本:7.1.1

Android 工作室:北极狐

我在 buildSrc 下创建的 build.gradle.kts :

plugins {
    `java-gradle-plugin`
    `kotlin-dsl`
    `kotlin-dsl-precompiled-script-plugins`
}

repositories {
    mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)

我从 buildSrc/src/main/java/Dependency 导入的文件:

object Versions {
    const val compose_version = "1.0.0"
}

object Dependencies {
    const val compose_ui = "androidx.compose.ui:ui:${Versions.compose_version}"
    const val compose_material = "androidx.compose.material:material:${Versions.compose_version}"
    const val compose_ui_tooling_preview = "androidx.compose.ui:ui-tooling-preview:${Versions.compose_version}"
    const val compose_ui_tooling = "androidx.compose.ui:ui-tooling:${Versions.compose_version}"
    const val compose_ui_test = "androidx.compose.ui:ui-test-junit4:${Versions.compose_version}"
}
Run Code Online (Sandbox Code Playgroud)

应用程序 build.gradle.kts 文件:

plugins {
    id("com.android.application")
    kotlin("android")
} …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin gradle-kotlin-dsl

7
推荐指数
1
解决办法
1万
查看次数

即使状态发生变化,我的可组合视图也不会自行重组

我正在尝试使用 jetpack compose 开发示例聊天应用程序并与状态作斗争。我有包含消息的lazyColumn。我的问题是,当用户单击按钮时,即使我的列表得到更新,我的“ChatList”功能也不会重新组合。仅当“消息”状态发生变化时才重新组合。因此,在我向文本字段输入内容后,我可以在列表中看到之前添加的消息。

这是我的可组合项和视图模型:

@Composablefun ChatList() {
ConstraintLayout {
    val (list, send) = createRefs()
    val viewModel = viewModel<MainViewModel>()
    val chatList by viewModel.messages.observeAsState(viewModel.messageList)
    var message by rememberSaveable { mutableStateOf("") }
    val state = rememberLazyListState()
    LazyColumn(state = state, modifier = Modifier.constrainAs(list) {
        top.linkTo(parent.top)
        bottom.linkTo(send.top)
        height = Dimension.fillToConstraints
    }) {
        items(chatList) { item ->
            when (item.isMe) {
                true -> ChatLayoutMe(item.message)
                false -> ChatLayout(item.message)
            }
        }
    }
    SendMessage(message = message, modifier = Modifier.constrainAs(send) {
        bottom.linkTo(parent.bottom)
    }) {
        message = it
    }
}}

@Composablefun …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-jetpack-compose

6
推荐指数
1
解决办法
2554
查看次数

我的视图在更改状态后多次重新组合

我正在从事撰写项目。我有简单的登录页面。单击登录按钮后,登录状态在视图模型中设置。问题是当我在服务调用后设置 loginState 时,我的可组合项会多次重新组合。因此,navcontroller 会进行多次导航。我不明白这个问题。谢谢你的帮助。

我的可组合项:

@Composable
fun LoginScreen(
    navController: NavController,
    viewModel: LoginViewModel = hiltViewModel()
) {
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.SpaceEvenly
    ) {
        val email by viewModel.email
        val password by viewModel.password
        val enabled by viewModel.enabled

        if (viewModel.loginState.value) {
            navController.navigate(Screen.HomeScreen.route) {
              popUpTo(Screen.LoginScreen.route) {
                 inclusive = true
              }
            }
        }

        LoginHeader()
        LoginForm(
            email = email,
            password = password,
            onEmailChange = { viewModel.onEmailChange(it) },
            onPasswordChange = { viewModel.onPasswordChange(it) }
        )
        LoginFooter(
            enabled,
            onLoginClick = {
                viewModel.login()
            },
            onRegisterClick = {
                navController.navigate(Screen.RegisterScreen.route) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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