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
+52 -10
View File
@@ -1,8 +1,13 @@
package ru.fromchat.ui 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.Composable
import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.unit.IntOffset
import androidx.compose.runtime.remember 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.LoginScreen
import ru.fromchat.ui.auth.RegisterScreen import ru.fromchat.ui.auth.RegisterScreen
import ru.fromchat.ui.chat.ChatScreen import ru.fromchat.ui.chat.ChatScreen
@@ -10,14 +15,51 @@ import ru.fromchat.ui.chat.ChatScreen
@Composable @Composable
fun App() { fun App() {
FromChatTheme { FromChatTheme {
val (route, setRoute) = remember { mutableStateOf("login") } val navController = rememberNavController()
when (route) { val animationSpec = tween<IntOffset>(400)
"login" -> LoginScreen(
onLoginSuccess = { setRoute("chat") }, NavHost(
onNavigateToRegister = { setRoute("register") } navController = navController,
) startDestination = "login",
"register" -> RegisterScreen(onRegistered = { setRoute("login") }) enterTransition = {
"chat" -> ChatScreen() slideIntoContainer(
Start,
animationSpec = animationSpec
)
},
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() }
} }
} }
} }