Skip to content

Commit 31c26a1

Browse files
committed
Add test screens for nested navigation
1 parent 26bfd01 commit 31c26a1

File tree

12 files changed

+526
-224
lines changed

12 files changed

+526
-224
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package io.github.xxfast.decompose.screen
2+
3+
import androidx.compose.runtime.Composable
4+
import com.arkivanov.decompose.ExperimentalDecomposeApi
5+
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.predictiveBackAnimation
6+
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.slide
7+
import com.arkivanov.decompose.extensions.compose.jetbrains.stack.animation.stackAnimation
8+
import com.arkivanov.decompose.router.stack.pop
9+
import com.arkivanov.decompose.router.stack.push
10+
import io.github.xxfast.decompose.LocalComponentContext
11+
import io.github.xxfast.decompose.router.Router
12+
import io.github.xxfast.decompose.router.content.RoutedContent
13+
import io.github.xxfast.decompose.router.rememberRouter
14+
import io.github.xxfast.decompose.screen.details.DetailScreen
15+
import io.github.xxfast.decompose.screen.list.ListScreen
16+
import io.github.xxfast.decompose.screen.nested.NestedScreen
17+
18+
@OptIn(ExperimentalDecomposeApi::class)
19+
@Composable
20+
fun HomeScreen() {
21+
val router: Router<HomeScreens> =
22+
rememberRouter(HomeScreens::class, stack = listOf(HomeScreens.List))
23+
24+
RoutedContent(
25+
router = router,
26+
animation = predictiveBackAnimation(
27+
animation = stackAnimation(slide()),
28+
onBack = { router.pop() },
29+
backHandler = LocalComponentContext.current.backHandler
30+
)
31+
) { screen ->
32+
when (screen) {
33+
HomeScreens.List -> ListScreen(
34+
onSelect = { count -> router.push(HomeScreens.Details(count)) },
35+
onSelectColor = { router.push(HomeScreens.Nested) }
36+
)
37+
38+
HomeScreens.Nested -> NestedScreen(
39+
onBack = { router.pop() },
40+
onSelect = { count -> router.push(HomeScreens.Details(count)) },
41+
)
42+
43+
is HomeScreens.Details -> DetailScreen(
44+
count = screen.number,
45+
onBack = { router.pop() }
46+
)
47+
}
48+
}
49+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.xxfast.decompose.screen
2+
3+
import com.arkivanov.essenty.parcelable.Parcelable
4+
import com.arkivanov.essenty.parcelable.Parcelize
5+
6+
@Parcelize
7+
sealed class HomeScreens: Parcelable {
8+
data object List: HomeScreens()
9+
data object Nested: HomeScreens()
10+
data class Details(val number: Int): HomeScreens()
11+
}
12+

decompose-router/src/androidInstrumentedTest/kotlin/io/github/xxfast/decompose/screen/TestScreens.kt

Lines changed: 0 additions & 209 deletions
This file was deleted.

decompose-router/src/androidInstrumentedTest/kotlin/io/github/xxfast/decompose/screen/TestStateModels.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.github.xxfast.decompose.screen
2+
3+
const val LIST_TAG = "list"
4+
const val TOOLBAR_TAG = "toolbar"
5+
const val FAVORITE_TAG = "favorite"
6+
const val BACK_BUTTON_TAG = "back"
7+
const val TITLE_BAR_TAG = "titleBar"
8+
const val DETAILS_TAG = "details"

0 commit comments

Comments
 (0)