如何更改支架浮动操作按钮在不同屏幕上的操作。Jetpack 组合

Ван*_*зюк 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 来保存编辑后的实体。

Ric*_*per 0

如果您正在使用Navigation,则可以检索navControllerby rememberNavController() ,然后使用它getCurrentBackStackEntry().destination,在块中应用条件onClick并相应地设置操作