kioko
01/03/2024, 6:49 PMjava.lang.IllegalStateException: Configurations must be unique
at com.arkivanov.decompose.router.children.ChildrenNavigator.switch(ChildrenNavigator.kt:114)
at com.arkivanov.decompose.router.children.ChildrenNavigator.navigate(ChildrenNavigator.kt:108)
at com.arkivanov.decompose.router.children.ChildrenFactoryKt$children$eventObserver$1.invoke(ChildrenFactory.kt:177)
at com.arkivanov.decompose.router.children.ChildrenFactoryKt$children$eventObserver$1.invoke(ChildrenFactory.kt:174)
at com.arkivanov.decompose.Relay.drainLoop(Relay.kt:48)
at com.arkivanov.decompose.Relay.accept(Relay.kt:29)
at com.arkivanov.decompose.router.stack.DefaultStackNavigation.navigate(DefaultStackNavigation.kt:11)
at com.arkivanov.decompose.router.stack.StackNavigatorExtKt.push(StackNavigatorExt.kt:20)
at com.arkivanov.decompose.router.stack.StackNavigatorExtKt.push$default(StackNavigatorExt.kt:19)
Arkadii Ivanov
01/03/2024, 6:53 PMkioko
01/03/2024, 6:59 PMArkadii Ivanov
01/03/2024, 7:01 PMnavigate { (it + MyConfig(...)).asReversed().distinct().asReversed() }
Arkadii Ivanov
01/03/2024, 7:01 PMkioko
01/03/2024, 7:09 PMArkadii Ivanov
01/03/2024, 7:12 PMDennis
01/04/2024, 7:27 AMArkadii Ivanov
01/04/2024, 8:04 AMDennis
01/04/2024, 10:32 AMkioko
01/04/2024, 11:08 AMArkadii Ivanov
01/04/2024, 11:11 AMArkadii Ivanov
01/07/2024, 11:05 AM/**
* Pushes the provided [configuration] at the top of the stack, removing the [configuration] from the back stack, if any.
*
* This API works similar to [bringToFront], except it compares configurations by equality rather than by configuration class.
*
* @param onComplete called when the navigation is finished (either synchronously or asynchronously).
*/
@ExperimentalDecomposeApi
fun <C : Any> StackNavigator<C>.pushToFront(
configuration: C,
onComplete: () -> Unit = {},
) {
navigate(
transformer = { stack -> stack - configuration + configuration },
onComplete = { _, _ -> onComplete() },
)
}
How do you find this API?
I have also tried adding an argument to bringToFront
instead of adding a brand new function. But I didn't like the usage - it's quite verbose. A dedicated function looks better.Dennis
01/08/2024, 6:28 AMkioko
01/09/2024, 4:05 PMArkadii Ivanov
01/23/2024, 10:25 PMpushToFront
is released in Decompose 3.0.0-alpha05.kioko
01/24/2024, 9:27 AM