如何在Jetpack Compose中更改topBar对应的屏幕

Posted

技术标签:

【中文标题】如何在Jetpack Compose中更改topBar对应的屏幕【英文标题】:How to change topBar corresponding screen in Jetpack Compose 【发布时间】:2021-10-27 05:39:47 【问题描述】:

我有一个这样的脚手架:

Scaffold(
   topBar = 
       TopBar(...)
   ,
   bottomBar = 
       BottomNavigationBar(...)
   
) 
    NavHost(...)

当我导航到另一个屏幕时更改 TopBar 的最佳方法是什么?

【问题讨论】:

【参考方案1】:

有两种可能的方法:

    观察currentScreen 并在topBar 中使用when 并据此更改

    topbar放在它所属的屏幕内。

我更喜欢第二个,因为它不相互共享,没有理由使用丑陋的when 声明。

【讨论】:

对于(2),我应该在每个屏幕内输入Scaffold() 吗?或者,我可以使用单个Scaffold(),但创建一个可组合函数的可变状态(顶栏的内容),将该状态传递给每个屏幕并设置它? @xierch 是的,将Scaffold() 放在每个屏幕内。你刚才说的是(1)currentScreen ,即mutableState,带有一个Scaffold()

以上是关于如何在Jetpack Compose中更改topBar对应的屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose,设置新数据时如何重置 LazyColumn 位置?

Jetpack Compose:如何以编程方式将主题从浅色模式更改为深色模式 onClick

Jetpack Compose:列表更改时更新可组合

展开时更改 ModalDrawer 的大小,Jetpack Compose

Jetpack Compose - LazyVerticalGrid

Jetpack Compose 的方向