Improve animations

Signed-off-by: denis0001-dev <denis0001.dev@ya.ru>
This commit is contained in:
2025-09-07 21:38:27 +03:00
Unverified
parent 26c9abe0ea
commit 0422438c09
+51 -9
View File
@@ -1,8 +1,13 @@
package ru.fromchat.ui
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.End
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.Start
import androidx.compose.animation.core.tween
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.unit.IntOffset
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import ru.fromchat.ui.auth.LoginScreen
import ru.fromchat.ui.auth.RegisterScreen
import ru.fromchat.ui.chat.ChatScreen
@@ -10,14 +15,51 @@ import ru.fromchat.ui.chat.ChatScreen
@Composable
fun App() {
FromChatTheme {
val (route, setRoute) = remember { mutableStateOf("login") }
when (route) {
"login" -> LoginScreen(
onLoginSuccess = { setRoute("chat") },
onNavigateToRegister = { setRoute("register") }
val navController = rememberNavController()
val animationSpec = tween<IntOffset>(400)
NavHost(
navController = navController,
startDestination = "login",
enterTransition = {
slideIntoContainer(
Start,
animationSpec = animationSpec
)
"register" -> RegisterScreen(onRegistered = { setRoute("login") })
"chat" -> ChatScreen()
},
exitTransition = {
slideOutOfContainer(
Start,
animationSpec = animationSpec
)
},
popEnterTransition = {
slideIntoContainer(
End,
animationSpec = animationSpec
)
},
popExitTransition = {
slideOutOfContainer(
End,
animationSpec = animationSpec
)
}
) {
composable("login") {
LoginScreen(
onLoginSuccess = { navController.navigate("chat") },
onNavigateToRegister = { navController.navigate("register") }
)
}
composable("register") {
RegisterScreen(
onRegistered = { navController.navigate("login") }
)
}
composable("chat") { ChatScreen() }
}
}
}