Alexander Karkossa
10/13/2020, 12:31 PMAfzal Najam
10/13/2020, 12:49 PMval fabConfig = remember { mutableStateOf(FabConfig()) }
? Same with bottomAppBar config.Alexander Karkossa
10/13/2020, 12:52 PMallan.conda
10/13/2020, 1:53 PMAlexander Karkossa
10/13/2020, 2:05 PMallan.conda
10/13/2020, 2:16 PMAlexander Karkossa
10/13/2020, 2:27 PMAfzal Najam
10/13/2020, 2:29 PM@Composable
private fun BottomDrawerApp() {
val navController = rememberNavController()
val fabConfig = remember { FabConfig() }
Log.d("TAG", "redrawing")
BottomDrawerLayout(drawerContent = {}) {
Scaffold(
floatingActionButton = {
if (fabConfig.isVisible.value) {
FloatingActionButton(onClick = {}) {
}
}
},
bodyContent = {
NavHost(
navController = navController,
startDestination = Screen.Profile.title
) {
composable(Screen.Profile.title) {
Button(onClick = {
navController.navigate(Screen.Dashboard.title)
}) {
Text(text = "Dashboard")
}
fabConfig.isVisible.value = true
}
composable(Screen.Dashboard.title) {
Column(modifier = Modifier.fillMaxSize().then(Modifier.padding(8.dp))) {
Text(text = Screen.Dashboard.title)
}
fabConfig.isVisible.value = false
}
composable(Screen.Scrollable.title) {
NoClickScrollable()
}
}
}
)
}
}
class FabConfig(val isVisible: MutableState<Boolean> = mutableStateOf(true))
Alexander Karkossa
10/13/2020, 2:37 PMAfzal Najam
10/13/2020, 2:43 PMisFloatingActionButtonDocked = fabConfig.isVisible.value
If I set it to true, the issue disappears.Alexander Karkossa
10/13/2020, 2:44 PMAfzal Najam
10/13/2020, 2:45 PMAlexander Karkossa
10/13/2020, 2:46 PM@Composable
fun AppContent() {
val navHostController = rememberNavController()
NavHost(navController = navHostController, startDestination = Screen.CheckLicenseScreenDestination) {
composable(id = Screen.CheckLicenseScreenDestination) {
NavContent { fabConfig: FabConfig, bottomAppBarConfig: BottomAppBarConfig ->
onCommit {
fabConfig.isVisible.value = false
bottomAppBarConfig.showBottomBar.value = false
}
Column(modifier = Modifier.fillMaxSize()) {
Button(onClick = {
navHostController.navigate(Screen.LoginScreenDestination)
}) {
Text(text = "License Check done!")
}
}
}
}
composable(id = Screen.LoginScreenDestination) {
NavContent { fabConfig: FabConfig, bottomAppBarConfig: BottomAppBarConfig ->
onCommit {
fabConfig.isVisible.value = true
fabConfig.fabPosition.value = FabPosition.End
bottomAppBarConfig.showBottomBar.value = true
}
Column(modifier = Modifier.fillMaxSize()) {
Text(text = "Login View")
}
}
}
}
}
@Composable
fun NavContent(content: @Composable (fabConfig: FabConfig, bottomAppBarConfig: BottomAppBarConfig) -> Unit) {
val fabConfig = remember { FabConfig() }
val bottomAppBarConfig = remember { BottomAppBarConfig() }
BottomDrawerLayout(
gesturesEnabled = bottomAppBarConfig.showBottomBar.value,
drawerContent = {}
) {
Scaffold(
modifier = Modifier.statusBarsPadding().navigationBarsPadding(),
floatingActionButton = {
if (fabConfig.isVisible.value) {
FloatingActionButton(
onClick = { }
) {
Icon(
asset = vectorResource(id = R.drawable.ic_add_white_24dp),
tint = MaterialTheme.colors.onSecondary
)
}
}
},
isFloatingActionButtonDocked = fabConfig.isVisible.value,
floatingActionButtonPosition = fabConfig.fabPosition.value,
bottomBar = {}
) {
content(
fabConfig = fabConfig,
bottomAppBarConfig = bottomAppBarConfig
)
}
}
}
Afzal Najam
10/13/2020, 3:09 PM@Composable
private fun WeirdFabApp() {
var showFab by remember { mutableStateOf(true) }
Scaffold(
floatingActionButton = {
if (showFab) {
FloatingActionButton(onClick = {
showFab = false
}) {
}
}
},
bottomBar = {},
floatingActionButtonPosition = FabPosition.Center,
isFloatingActionButtonDocked = showFab,
bodyContent = {
onCommit {
showFab = true
}
Button(onClick = {
showFab = false
}) {
Text(text = "Dashboard")
}
}
)
}