Skip to content

Commit c3c838a

Browse files
author
TEYSSANDIER Raphael
committed
feat: Make it work
1 parent 4af747c commit c3c838a

File tree

6 files changed

+34
-14
lines changed

6 files changed

+34
-14
lines changed

FloconDesktop/composeApp/src/commonMain/kotlin/io/github/openflocon/flocondesktop/App.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,15 @@ fun App() {
9696
}
9797
}
9898

99-
FloconNavigation {
100-
networkNavigation()
99+
FloconSurface(
100+
modifier = Modifier.fillMaxSize()
101+
) {
102+
FloconNavigation(
103+
navigationState = navigationState,
104+
modifier = Modifier.fillMaxSize()
105+
) {
106+
networkNavigation()
107+
}
101108
}
102109
// Box(
103110
// Modifier

FloconDesktop/gradle/libs.versions.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ buildconfig = "5.6.8"
3737
paging = "3.3.2"
3838

3939
# TODO Sort
40-
nav3Core = "1.0.0-alpha10"
40+
nav3Core = "1.0.0+dev3004"
4141
navEvent = "1.0.0-alpha09"
4242
lifecycleViewmodelNav3 = "2.10.0-alpha04"
4343
kotlinxSerializationCore = "1.8.1"
@@ -95,8 +95,8 @@ other-jsontree = { module = "com.sebastianneubauer.jsontree:jsontree", version.r
9595
ui-tooling-preview-desktop = { module = "org.jetbrains.compose.ui:ui-tooling-preview-desktop", version.ref = "uiToolingPreviewDesktop" }
9696

9797
# TODO Sort
98-
androidx-navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" }
99-
androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "nav3Core" }
98+
#compose-navigation3-runtime = { module = "org.jetbrains.androidx.navigation3:navigation3-runtime", version.ref = "nav3Core" }
99+
compose-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "nav3Core" }
100100

101101
androidx-navigationevent-core = { group = "androidx.navigationevent", name = "navigationevent", version.ref = "navEvent" }
102102
androidx-navigationevent-compose = { group = "androidx.navigationevent", name = "navigationevent-compose", version.ref = "navEvent" }

FloconDesktop/library/designsystem/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ kotlin {
3232
api(compose.components.uiToolingPreview)
3333
api(libs.other.jsontree)
3434

35-
api(libs.androidx.navigation3.ui)
36-
api(libs.androidx.navigation3.runtime)
35+
api(libs.compose.navigation3.ui)
36+
// api(libs.compose.navigation3.runtime)
3737

3838
// Not KMP yet
3939
// api(libs.androidx.lifecycle.viewmodel.navigation3)
Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,55 @@
11
package io.github.openflocon.navigation
22

3+
import androidx.compose.animation.fadeIn
4+
import androidx.compose.animation.fadeOut
5+
import androidx.compose.animation.togetherWith
36
import androidx.compose.foundation.layout.Box
47
import androidx.compose.runtime.Composable
58
import androidx.compose.runtime.remember
69
import androidx.compose.ui.Modifier
710
import androidx.navigation3.runtime.EntryProviderBuilder
811
import androidx.navigation3.runtime.entryProvider
12+
import androidx.navigation3.runtime.rememberSavedStateNavEntryDecorator
13+
import androidx.navigation3.scene.rememberSceneSetupNavEntryDecorator
914
import androidx.navigation3.ui.NavDisplay
1015
import androidx.navigationevent.NavigationEventDispatcher
1116
import androidx.navigationevent.NavigationEventDispatcherOwner
1217
import androidx.navigationevent.compose.LocalNavigationEventDispatcherOwner
1318
import androidx.navigationevent.compose.NavigationEventDispatcherOwner
14-
import org.koin.compose.koinInject
1519

1620
@Composable
1721
fun FloconNavigation(
22+
navigationState: FloconNavigationState,
23+
modifier: Modifier = Modifier,
1824
builder: EntryProviderBuilder<FloconRoute>.() -> Unit
1925
) {
20-
val navigationState = koinInject<FloconNavigationState>()
2126
val dispatcher = remember { NavigationEventDispatcher() }
2227
val parent = remember {
2328
object : NavigationEventDispatcherOwner {
2429
override val navigationEventDispatcher: NavigationEventDispatcher = dispatcher
2530
}
2631
}
27-
32+
2833
LocalNavigationEventDispatcherOwner.provides(parent)
2934

3035
NavigationEventDispatcherOwner(parent = parent) {
3136
NavDisplay(
3237
backStack = navigationState.stack,
38+
transitionSpec = { fadeIn() togetherWith fadeOut() },
39+
popTransitionSpec = { fadeIn() togetherWith fadeOut() },
40+
predictivePopTransitionSpec = { fadeIn() togetherWith fadeOut() },
3341
entryDecorators = listOf(
34-
// rememberSceneSetupNavEntryDecorator(),
35-
// rememberSavedStateNavEntryDecorator()
42+
rememberSceneSetupNavEntryDecorator(),
43+
rememberSavedStateNavEntryDecorator()
3644
),
3745
onBack = { navigationState.back(it) },
3846
entryProvider = entryProvider {
3947
entry<LoadingRoute> {
4048
Box(Modifier)
4149
}
4250
builder()
43-
}
51+
},
52+
modifier = modifier
4453
)
4554
}
4655
}

FloconDesktop/navigation/src/commonMain/kotlin/io/github/openflocon/navigation/FloconNavigationState.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.github.openflocon.navigation
22

3+
import androidx.compose.runtime.mutableStateListOf
4+
35
class FloconNavigationState internal constructor() {
46

5-
private val _stack = mutableListOf<FloconRoute>(LoadingRoute)
7+
private val _stack = mutableStateListOf<FloconRoute>(LoadingRoute)
68
val stack: List<FloconRoute> = _stack
79

810
fun navigate(route: FloconRoute) {

FloconDesktop/settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pluginManagement {
1111
}
1212
}
1313
mavenCentral()
14+
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
1415
gradlePluginPortal()
1516
}
1617
}
@@ -24,6 +25,7 @@ dependencyResolutionManagement {
2425
includeGroupAndSubgroups("com.google")
2526
}
2627
}
28+
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
2729
mavenCentral()
2830
}
2931
}

0 commit comments

Comments
 (0)