代码之家  ›  专栏  ›  技术社区  ›  wbk727

如何重用TopAppBar并访问其属性

  •  0
  • wbk727  · 技术社区  · 2 年前

    如何多次访问和重用顶级应用程序栏的属性?这种方法有什么局限性吗?我希望能够在必要时更改顶部应用程序栏中的文本。

    class MainActivity : ComponentActivity() {
        private val topBarTitle: String = "?"
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContent {
                AirlinesTheme {
                    setContent {
                        Scaffold(
                            topBar = { TopBar() },
                            content = {}
                        )
                    }
                }
            }
        }
    
        @Composable
        fun TopBar() {
            SmallTopAppBar(title = { Text(text = topBarTitle) })
        }
    }
    
    0 回复  |  直到 2 年前
        1
  •  0
  •   Richard Onslow Roper    2 年前

    通常重要数据存储在ViewModel中

    class MyVM : ViewModel(){
     var topBarProperty by mutableStateOf("Initial")
    }
    

    然后像这样初始化虚拟机

    val vm by viewModels<MyVM>()

    现在,使用顶部栏中的属性

    Scaffold(
                            topBar = { Text(text = vm.topBarProperty) },
                            content = {}
                        )
    

    现在,你可以做一些类似的事情 vm.topBarProperty = "Updated" ,并且它将更新topBar上的值。这是因为我们正在使用 MutableState<T> 类型变量,该变量将在修改时触发对读取它的组件的重新计算。