admin管理员组

文章数量:1026912

So, i have a OutlinedButton and for some reason when there is another code besides

navController.navigate("HomeScreen")

my application crashing on starting with this error:

Process: com.rendev.fooddelivery, PID: 23827
java.lang.VerifyError: Verifier rejected class com.rendev.fooddelivery.screens.RegisterScreenKt: 
void com.rendev.fooddelivery.screens.RegisterScreenKt.RegisterScreen(androidxpose.ui.Modifier, 
androidx.navigation.NavController, androidxpose.runtime.Composer, int, int) failed to verify: 
void com.rendev.fooddelivery.screens.RegisterScreenKt.RegisterScreen(androidxpose.ui.Modifier, 
androidx.navigation.NavController, androidxpose.runtime.Composer, int, int): [0x1072] copy1 v0<-v268 type=Reference: 
androidxpose.ui.Modifier cat=1 
(declaration of 'com.rendev.fooddelivery.screens.RegisterScreenKt' appears in /data/app/~~Z0Ucuhnop6JLnikZX1mHFw==/com.rendev.fooddelivery-Try7BmzgN67_EkBMtIOofQ==/base.apk!classes3.dex)
                                                                                                        
at com.rendev.fooddelivery.ComposableSingletons$MainActivityKt$lambda-1$1$1$2.invoke(MainActivity.kt:52)
                                                                                                        
at com.rendev.fooddelivery.ComposableSingletons$MainActivityKt$lambda-1$1$1$2.invoke(MainActivity.kt:51)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:694)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:693)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:401)
                                                                                                        
at androidxpose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:85)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:380)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32.invoke(NavHost.kt:693)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32.invoke(NavHost.kt:674)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:803)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:792)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedVisibilityKt.AnimatedEnterExitImpl(AnimatedVisibility.kt:771)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:774)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:757)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:816)
                                                                                                        
at androidx.navigationpose.NavHostKt.NavHost(NavHost.kt:646)

when there is no navController.navigate("HomeScreen") in onClick, everything runs fine, also for some reason there is no such problem in other OutlineButtons

OutlineButtonCode:

@Composable
fun OutlineButtonElement(
    navController: NavController,
    firstNameText: String,
    lastNameText: String,
    eMailText: String,
    passText: String,
    context: Context,
    checkState: MutableState<Boolean>,
    borderColor: Color,
    tint: Color
) {
    OutlinedButton(
        enabled = true,
        onClick = {

            val passwordError = validatePassword(passText)

            if (
                firstNameText == ""
                || lastNameText == ""
                || eMailText == ""
                || passText == ""
            ) {
                makeText(
                    context,
                    "Please fill in all the details",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }

            if (passwordError != null) {
                makeText(
                    context,
                    passwordError,
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }

            val namesPattern = Regex("\"/^((?:\\p{Ll}|\\p{Lu}){2,30}\\s?){2,4}\$/g\"")
            if (
                firstNameText.contains(namesPattern)
                || lastNameText.contains(namesPattern)
            ) {
                makeText(
                    context,
                    "First or Last name contains digits/special symbols",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }


            if (!(android.util.Patterns.EMAIL_ADDRESS.matcher(eMailText.replace(" ", ""))
                    .matches())
            ) {
                makeText(
                    context,
                    "E-mail is not valid",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            } else Log.d("E-mail", "Email is valid")


            if (!checkState.value) {
                makeText(
                    context,
                    "Please agree with the Privacy Policy & Terms Of Use",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }


            data class Person(
                val firstName: String,
                val lastName: String,
                val email: String,
            )

            val database =
                Firebase.database("")
            val myRef = database.getReference("users")

            auth = Firebase.auth
            auth.createUserWithEmailAndPassword(eMailText, passText)
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        navController.navigate("HomeScreen")
                        val eMail = eMailText.replace(".", "_").replace("#", "_")
                            .replace("$", "_").replace("[", "_").replace("]", "_")
                        val person =
                            Person(firstNameText, lastNameText, eMailText)
                        myRef.child(eMail).setValue(person)
                        makeText(
                            context,
                            "Registered",
                            Toast.LENGTH_SHORT
                        ).show()
                    } else {
                        makeText(
                            context,
                            "Registration failed",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                }
        },
        border = BorderStroke(1.dp, color = borderColor),
        colors = ButtonDefaults.outlinedButtonColors(
            containerColor = Color.Transparent
        ),
        modifier = Modifier
            .fillMaxWidth()
            .padding(horizontal = 10.dp, vertical = 10.dp)
            .height(45.dp),
    ) {
        Icon(
            painter = painterResource(id = R.drawable.registered),
            modifier = Modifier
                .size(30.dp)
                .padding(horizontal = 5.dp),
            contentDescription = null,
            tint = tint
        )
        val textColorMain = if (isSystemInDarkTheme()) Color.White else Color.Black
        Text(
            text = "Register",
            color = textColorMain,
            fontSize = 20.sp,
            fontWeight = FontWeight.Bold,
            modifier = Modifier.padding(horizontal = 5.dp)
        )
    }
}

MainActivity code:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            FoodDeliveryTheme  {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    val navController = rememberNavController()
                    Background()
                    NavHost(navController = navController, startDestination = "RegisterScreen",
                    ) {
                        composable(
                            route = "RegisterScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Right
                                )
                            },
                        ) {
                            RegisterScreen(modifier = Modifier.padding(innerPadding), navController = navController)
                        }

                        composable(
                            route = "LoginScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Up
                                )
                            },


                        ) {
                            LoginScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                        composable(
                            "FotPasswordScreen",
                            enterTransition =
                            {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Left
                                )
                            },
                        ) {
                            FotPasswordScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                        composable(
                            "HomeScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Down
                                )
                            } ,

                        ) {
                            HomeScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                    }
                }
            }
        }
    }
}

I tried to clean project, then build again, didn't help, tried move navcontroller to another function and then call it, didn't help

So, i have a OutlinedButton and for some reason when there is another code besides

navController.navigate("HomeScreen")

my application crashing on starting with this error:

Process: com.rendev.fooddelivery, PID: 23827
java.lang.VerifyError: Verifier rejected class com.rendev.fooddelivery.screens.RegisterScreenKt: 
void com.rendev.fooddelivery.screens.RegisterScreenKt.RegisterScreen(androidxpose.ui.Modifier, 
androidx.navigation.NavController, androidxpose.runtime.Composer, int, int) failed to verify: 
void com.rendev.fooddelivery.screens.RegisterScreenKt.RegisterScreen(androidxpose.ui.Modifier, 
androidx.navigation.NavController, androidxpose.runtime.Composer, int, int): [0x1072] copy1 v0<-v268 type=Reference: 
androidxpose.ui.Modifier cat=1 
(declaration of 'com.rendev.fooddelivery.screens.RegisterScreenKt' appears in /data/app/~~Z0Ucuhnop6JLnikZX1mHFw==/com.rendev.fooddelivery-Try7BmzgN67_EkBMtIOofQ==/base.apk!classes3.dex)
                                                                                                        
at com.rendev.fooddelivery.ComposableSingletons$MainActivityKt$lambda-1$1$1$2.invoke(MainActivity.kt:52)
                                                                                                        
at com.rendev.fooddelivery.ComposableSingletons$MainActivityKt$lambda-1$1$1$2.invoke(MainActivity.kt:51)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:694)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32$1.invoke(NavHost.kt:693)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:401)
                                                                                                        
at androidxpose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:85)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:380)
                                                                                                        
at androidx.navigationpose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32.invoke(NavHost.kt:693)
                                                                                                        
at androidx.navigationpose.NavHostKt$NavHost$32.invoke(NavHost.kt:674)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:139)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:803)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1$5.invoke(AnimatedContent.kt:792)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedVisibilityKt.AnimatedEnterExitImpl(AnimatedVisibility.kt:771)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:774)
                                                                                                        
at androidxpose.animation.AnimatedContentKt$AnimatedContent$6$1.invoke(AnimatedContent.kt:757)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:109)
                                                                                                        
at androidxpose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
                                                                                                        
at androidxpose.animation.AnimatedContentKt.AnimatedContent(AnimatedContent.kt:816)
                                                                                                        
at androidx.navigationpose.NavHostKt.NavHost(NavHost.kt:646)

when there is no navController.navigate("HomeScreen") in onClick, everything runs fine, also for some reason there is no such problem in other OutlineButtons

OutlineButtonCode:

@Composable
fun OutlineButtonElement(
    navController: NavController,
    firstNameText: String,
    lastNameText: String,
    eMailText: String,
    passText: String,
    context: Context,
    checkState: MutableState<Boolean>,
    borderColor: Color,
    tint: Color
) {
    OutlinedButton(
        enabled = true,
        onClick = {

            val passwordError = validatePassword(passText)

            if (
                firstNameText == ""
                || lastNameText == ""
                || eMailText == ""
                || passText == ""
            ) {
                makeText(
                    context,
                    "Please fill in all the details",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }

            if (passwordError != null) {
                makeText(
                    context,
                    passwordError,
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }

            val namesPattern = Regex("\"/^((?:\\p{Ll}|\\p{Lu}){2,30}\\s?){2,4}\$/g\"")
            if (
                firstNameText.contains(namesPattern)
                || lastNameText.contains(namesPattern)
            ) {
                makeText(
                    context,
                    "First or Last name contains digits/special symbols",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }


            if (!(android.util.Patterns.EMAIL_ADDRESS.matcher(eMailText.replace(" ", ""))
                    .matches())
            ) {
                makeText(
                    context,
                    "E-mail is not valid",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            } else Log.d("E-mail", "Email is valid")


            if (!checkState.value) {
                makeText(
                    context,
                    "Please agree with the Privacy Policy & Terms Of Use",
                    Toast.LENGTH_SHORT
                ).show()
                return@OutlinedButton
            }


            data class Person(
                val firstName: String,
                val lastName: String,
                val email: String,
            )

            val database =
                Firebase.database("")
            val myRef = database.getReference("users")

            auth = Firebase.auth
            auth.createUserWithEmailAndPassword(eMailText, passText)
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        navController.navigate("HomeScreen")
                        val eMail = eMailText.replace(".", "_").replace("#", "_")
                            .replace("$", "_").replace("[", "_").replace("]", "_")
                        val person =
                            Person(firstNameText, lastNameText, eMailText)
                        myRef.child(eMail).setValue(person)
                        makeText(
                            context,
                            "Registered",
                            Toast.LENGTH_SHORT
                        ).show()
                    } else {
                        makeText(
                            context,
                            "Registration failed",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                }
        },
        border = BorderStroke(1.dp, color = borderColor),
        colors = ButtonDefaults.outlinedButtonColors(
            containerColor = Color.Transparent
        ),
        modifier = Modifier
            .fillMaxWidth()
            .padding(horizontal = 10.dp, vertical = 10.dp)
            .height(45.dp),
    ) {
        Icon(
            painter = painterResource(id = R.drawable.registered),
            modifier = Modifier
                .size(30.dp)
                .padding(horizontal = 5.dp),
            contentDescription = null,
            tint = tint
        )
        val textColorMain = if (isSystemInDarkTheme()) Color.White else Color.Black
        Text(
            text = "Register",
            color = textColorMain,
            fontSize = 20.sp,
            fontWeight = FontWeight.Bold,
            modifier = Modifier.padding(horizontal = 5.dp)
        )
    }
}

MainActivity code:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            FoodDeliveryTheme  {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    val navController = rememberNavController()
                    Background()
                    NavHost(navController = navController, startDestination = "RegisterScreen",
                    ) {
                        composable(
                            route = "RegisterScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Right
                                )
                            },
                        ) {
                            RegisterScreen(modifier = Modifier.padding(innerPadding), navController = navController)
                        }

                        composable(
                            route = "LoginScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Up
                                )
                            },


                        ) {
                            LoginScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                        composable(
                            "FotPasswordScreen",
                            enterTransition =
                            {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Left
                                )
                            },
                        ) {
                            FotPasswordScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                        composable(
                            "HomeScreen",
                            enterTransition = {
                                fadeIn(
                                    animationSpec = tween(
                                        800, easing = LinearEasing
                                    )
                                ) + slideIntoContainer(
                                    animationSpec = tween(800),
                                    towards = AnimatedContentTransitionScope.SlideDirection.Down
                                )
                            } ,

                        ) {
                            HomeScreen(modifier = Modifier.padding(innerPadding), navController)
                        }
                    }
                }
            }
        }
    }
}

I tried to clean project, then build again, didn't help, tried move navcontroller to another function and then call it, didn't help

本文标签: androidNavController crashing in OutlineButtonStack Overflow