Bruno_
10/25/2019, 5:32 PMMaterialTheme
ModalDrawerLayout(
bodyContent = { AppContent { onDrawerStateChange(DrawerState.Opened) } }
)
}
i placed inside Material theme AppContent()
directlyclass MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Main()
}
}
}
Main composable:
@Composable
fun Main()
{
MaterialTheme {
Crossfade(AppStatus) {
when (it)
{
is Screen.Home -> HomeScreen()
is Screen.Home2 -> HomeScreen2()
}
}
}
Status:
sealed class Screen {
object Home : Screen()
object Home2 : Screen()
}
@Model
object AppStatus {
var screen: Screen = Screen.Home
}
fun navigateTo(destination: Screen) {
AppStatus.screen = destination
}
and views
@Composable
fun HomeScreen() {
Container(alignment = Alignment.BottomRight, padding = EdgeInsets(10.dp)) {
FloatingVectorImageButton(R.drawable.ic_crawling_applying) {
println(1)
navigateTo(Screen.Home2)
}
}
}
@Composable
fun HomeScreen2() {
Container(alignment = Alignment.BottomLeft, padding = EdgeInsets(10.dp)) {
FloatingVectorImageButton(R.drawable.ic_crawling_applying) {
println(2)
navigateTo(Screen.Home)
}
}
}
1
is being printedFudge
10/25/2019, 6:22 PMwasyl
10/25/2019, 6:59 PMfun navigateTo
needs a @Composable
annotation too? So that plugin can do its magic when you change property on a @Model
instance?Bruno_
10/25/2019, 8:03 PMwasyl
10/25/2019, 8:24 PMCrossfade(AppStatus.screen)
. Android Studio even complained for me that the types weren’t compatible. And then in fact you don’t need @Composable
on navigateTo
pavi2410
10/25/2019, 8:31 PMBruno_
10/25/2019, 8:42 PMCrossfade(AppStatus.screen)
thing was because I removed unnecessary bits here in slack chat
what version of compose are you using? dev02 by any chance?pavi2410
10/25/2019, 8:44 PMwasyl
10/25/2019, 9:16 PMFloatingVectorImageButton
so I placed
Button("Go to home", onClick = {
navigateTo(Screen.Home)
})
and
Button("To home 2", onClick = {
navigateTo(Screen.Home2)
})
in the containersFloatingVectorImageButton
? Are you sure the last parameter is an onClick lambda?Bruno_
10/25/2019, 9:23 PM@Composable
fun FloatingVectorImageButton(
@DrawableRes id: Int,
color: Color = Color.White,
backgroundColor: Color = Color(0xFF2196F3),
onClick: () -> Unit
)
{
FloatingActionButton(color = backgroundColor, onClick = onClick) {
VectorImage(id, color)
}
}
@Composable
fun VectorImage(@DrawableRes id: Int, color: Color = Color.Transparent)
{
val vector = +vectorResource(id)
WithDensity {
Container(
width = vector.defaultWidth.toDp(),
height = vector.defaultHeight.toDp()
) {
DrawVector(vector, color)
}
}
}
wasyl
10/25/2019, 9:33 PMbuild.gradle
?Bruno_
10/25/2019, 9:46 PMwasyl
10/25/2019, 9:52 PM