我在Compose中有一个应用程序,startDestination设置为带底部导航栏(包含3个项目)和顶部应用栏的scaffold屏幕,我可以通过3个底部导航选项卡进行导航。但是假设我想要点击底部选项卡屏幕中的一个卡片,它应该打开一个没有底部和应用栏的详细信息屏幕 (因为Navhost位于scaffold内,所以详细信息屏幕上也会显示底部和顶部栏),那么正确的方法是什么?目前我尝试了以下方法:
1. 在新活动中启动详细屏幕。
2. 使用currentDestination路由作为状态来有条件地隐藏详细屏幕路由的底部和应用栏。
这两种方法都可行,但第一种方法的问题在于,不建议在Jetpack Navigation中使用多个活动,而应该坚持使用单个活动,它还进一步破坏了导航,如果我要从详细信息移动到另一个屏幕,则会出现问题。第二种方法的问题在于,隐藏和显示底部/顶部栏会在屏幕之间产生非常糟糕的转换效果,应用程序不会感觉流畅。
因此,我正在寻找一种适合指南的处理方式,尽管我在这方面找不到任何信息。
更新
我使用路由显示/隐藏底部和应用栏,结果发现我遇到的坏动画和延迟问题是因为我在运行调试应用程序,使用minifyEnabled true
(R8)的发布应用程序,过渡非常平滑和自然,就像我想要的那样。
同时,根据Google官方Compose示例应用程序JetSnack,这是从底部栏屏幕导航到非底部栏屏幕的适当方法。感谢@vitidev在评论中指出。