Jan
06/23/2023, 2:03 PMJan
06/23/2023, 2:03 PM@Composable
fun CustomButton(
onClick: () -> Unit,
modifier: Modifier = Modifier,
colorSet: ButtonColorSet,
enabled: Boolean = true,
content: @Composable RowScope.() -> Unit
) {
val interactionSource = remember { MutableInteractionSource() }
val isPressed by interactionSource.collectIsPressedAsState()
val containerColor =
if (isPressed) colorSet.selected.background else colorSet.active.background
val contentColor =
if (isPressed) colorSet.selected.text else colorSet.active.text
val borderColor =
if (isPressed) colorSet.selected.border else colorSet.active.border
Column{
Button(
modifier = modifier,
colors = ButtonDefaults.buttonColors(
containerColor = containerColor,
contentColor = contentColor,
disabledContainerColor = colorSet.disabled.background,
disabledContentColor = colorSet.disabled.text,
),
interactionSource = interactionSource,
border = BorderStroke(1.dp, borderColor),
shape = ButtonShape,
onClick = onClick,
enabled = enabled,
content = {
content()
})
}
}
Jan
06/23/2023, 2:06 PMJan
06/23/2023, 2:07 PMArkadii Ivanov
06/23/2023, 2:13 PMArkadii Ivanov
06/23/2023, 2:14 PMJan
06/23/2023, 2:15 PMJan
06/23/2023, 2:15 PM@Composable
fun RootContent(
component: RootComponent,
modifier: Modifier = Modifier
) {
Children(
stack = component.childStack,
modifier = modifier,
animation = stackAnimation { _, _, direction ->
if (direction.isFront) {
slide() + fade()
} else {
scale(frontFactor = 1F, backFactor = 0.7F) + fade()
}
},
) {
when (val instance = it.instance) {
is IRootComponent.Screen.Home -> HomeScreen(
component = instance.component,
modifier = Modifier.fillMaxSize()
)
is IRootComponent.Screen.Sub -> SubScreen(
component = instance.component,
modifier
)
}
}
}
Arkadii Ivanov
06/23/2023, 2:19 PMArkadii Ivanov
06/23/2023, 2:20 PMJan
06/23/2023, 2:21 PMJan
06/23/2023, 2:21 PMJan
06/23/2023, 2:24 PMJan
06/23/2023, 2:24 PMJan
06/23/2023, 2:25 PMArkadii Ivanov
06/23/2023, 2:26 PMJan
06/23/2023, 2:27 PMJan
06/23/2023, 2:28 PMArkadii Ivanov
06/23/2023, 2:44 PMArkadii Ivanov
06/23/2023, 2:46 PMJan
06/23/2023, 2:46 PMstackAnimation { _, _, direction ->
if (direction.isFront) {
slide() + fade()
} else {
scale(frontFactor = 1F, backFactor = 0.7F) + fade()
}
}
I use:
stackAnimation { _ ->
slide() + fade()
}
Jan
06/23/2023, 2:46 PMArkadii Ivanov
06/23/2023, 2:47 PMJan
06/23/2023, 2:47 PMJan
06/23/2023, 2:47 PMArkadii Ivanov
06/23/2023, 2:48 PMArkadii Ivanov
06/23/2023, 2:48 PMJan
06/23/2023, 2:50 PMJan
06/23/2023, 2:54 PMArkadii Ivanov
06/23/2023, 3:03 PMJan
06/23/2023, 3:07 PMArkadii Ivanov
06/23/2023, 3:08 PMArkadii Ivanov
06/23/2023, 3:09 PMJan
06/23/2023, 3:09 PM