mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 10:37:05 +05:30
android: switch to material-motion-compose
This commit is contained in:
parent
9b9e924475
commit
3e028e8852
3 changed files with 20 additions and 6 deletions
|
@ -37,6 +37,8 @@ dependencies {
|
|||
implementation(libs.androidx.paging.compose)
|
||||
implementation(libs.copydown)
|
||||
implementation(libs.dagger.hilt.android)
|
||||
implementation(libs.material.motion.core)
|
||||
implementation(libs.material.motion.navigation)
|
||||
implementation(libs.sqldelight.extensions.coroutines)
|
||||
implementation(libs.kotlin.coroutines.core)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package dev.msfjarvis.claw.android.ui
|
||||
|
||||
import androidx.compose.animation.ExperimentalAnimationApi
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
|
@ -25,9 +26,6 @@ import androidx.compose.ui.res.stringResource
|
|||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.NavType
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import androidx.navigation.navArgument
|
||||
import androidx.navigation.navDeepLink
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
|
@ -48,8 +46,15 @@ import dev.msfjarvis.claw.common.res.ClawIcons
|
|||
import dev.msfjarvis.claw.common.theme.LobstersTheme
|
||||
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
|
||||
import kotlinx.coroutines.launch
|
||||
import soup.compose.material.motion.materialElevationScaleIn
|
||||
import soup.compose.material.motion.materialElevationScaleOut
|
||||
import soup.compose.material.motion.navigation.MaterialMotionNavHost
|
||||
import soup.compose.material.motion.navigation.composable
|
||||
import soup.compose.material.motion.navigation.rememberMaterialMotionNavController
|
||||
import soup.compose.material.motion.translateXIn
|
||||
import soup.compose.material.motion.translateXOut
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class)
|
||||
@Composable
|
||||
fun LobstersApp(
|
||||
viewModel: ClawViewModel = viewModel(),
|
||||
|
@ -61,7 +66,7 @@ fun LobstersApp(
|
|||
val hottestListState = rememberLazyListState()
|
||||
val newestListState = rememberLazyListState()
|
||||
val savedListState = rememberLazyListState()
|
||||
val navController = rememberNavController()
|
||||
val navController = rememberMaterialMotionNavController()
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
val postActions = rememberPostActions(urlLauncher, navController, viewModel)
|
||||
val currentDestination by currentNavigationDestination(navController)
|
||||
|
@ -142,7 +147,7 @@ fun LobstersApp(
|
|||
)
|
||||
},
|
||||
) { paddingValues ->
|
||||
NavHost(
|
||||
MaterialMotionNavHost(
|
||||
navController,
|
||||
startDestination = Destinations.startDestination.getRoute(),
|
||||
) {
|
||||
|
@ -193,6 +198,10 @@ fun LobstersApp(
|
|||
navDeepLink { uriPattern = "$uri/s/{postId}/.*" },
|
||||
navDeepLink { uriPattern = "$uri/s/{postId}" },
|
||||
),
|
||||
enterMotionSpec = { translateXIn { it } },
|
||||
exitMotionSpec = { materialElevationScaleOut() },
|
||||
popEnterMotionSpec = { materialElevationScaleIn() },
|
||||
popExitMotionSpec = { translateXOut { it } },
|
||||
) { backStackEntry ->
|
||||
val postId = requireNotNull(backStackEntry.arguments?.getString("postId"))
|
||||
setWebUri("https://lobste.rs/s/$postId")
|
||||
|
|
|
@ -5,6 +5,7 @@ coroutines = "1.6.1"
|
|||
dagger = "2.41"
|
||||
hilt = "1.0.0"
|
||||
kotlin = "1.6.10"
|
||||
material_motion = "0.8.4"
|
||||
richtext = "0.11.0"
|
||||
serialization = "1.3.2"
|
||||
sqldelight = "2.0.0-alpha02"
|
||||
|
@ -45,6 +46,8 @@ kamel-image = "com.alialbaali.kamel:kamel-image:0.3.0"
|
|||
kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
|
||||
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "serialization" }
|
||||
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }
|
||||
material_motion-core = { module = "io.github.fornewid:material-motion-compose-core", version.ref = "material_motion" }
|
||||
material_motion-navigation = { module = "io.github.fornewid:material-motion-compose-navigation", version.ref = "material_motion" }
|
||||
multiplatform-paging = "io.github.kuuuurt:multiplatform-paging:0.4.7"
|
||||
napier = "io.github.aakira:napier:2.5.0"
|
||||
r8 = "com.android.tools:r8:3.3.28"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue