Ван*_*зюк 6 android android-jetpack-compose android-jetpack-compose-scaffold
如何根据 Scaffold 的当前屏幕更改 FAB 操作(onClick{})。
Scaffold(
floatingActionButton = {
FloatingActionButton(onClick = {
//Different actions here depending on current screen
}) { }
}
) {
NavHost(
navController = navController,
startDestination = "route1"
) {
composable(
route = "route1"
) {
ScreenOne()
}
composable(
route = "route2"
) {
ScreenTwo()
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如,使用 ScreenOne() 我想向数据库添加一些实体,使用 ScreenTwo() 我想保存编辑后的实体。所有这些都使用 Scaffold 共享的相同 FAB。
更新:刚刚明白我还需要提到我还需要 FAB 来了解一些数据来操作。例如,我想通过单击 FAB 将一些实体保存到数据库,因此 FAB 需要了解该实体。
示例:我单击列表中的某个项目。它打开一些实体的导航方向。我正在修改此实体并单击 FAB 来保存编辑后的实体。
如果您正在使用Navigation
,则可以检索navController
by rememberNavController()
,然后使用它getCurrentBackStackEntry().destination
,在块中应用条件onClick
并相应地设置操作