问题描述
我想通过将Composables存储到Array / Stack中来实现简单的导航,以便可以使用Back按钮将其恢复。但是我不知道如何在数组中添加Composable。试图声明匿名Composable,以便我可以将其变量放入堆栈中但无法编译?我可以将函数名称放入数组吗?
var Details1 = @Composable
fun() {
Column(Modifier.fillMaxSize()) {
Text("Details 1")
}
}
var views = arrayOf(Details1)
解决方法
以下是带有建议的arrayOf(::Details1)
的代码,但无效
> package com.example.myapplication
>
> import android.os.Bundle import
> androidx.appcompat.app.AppCompatActivity import
> androidx.compose.foundation.Text import
> androidx.compose.foundation.layout.Column import
> androidx.compose.foundation.layout.fillMaxSize import
> androidx.compose.runtime.Composable import
> androidx.compose.ui.Modifier import
> androidx.compose.ui.platform.setContent
>
> class MainActivity : AppCompatActivity() {
>
> @Composable fun Details1() {
> Column(Modifier.fillMaxSize()) {
> Text("Details 1")
> } }
>
> override fun onCreate(savedInstanceState: Bundle?) {
> super.onCreate(savedInstanceState)
> setContent {
>
> var views = arrayOf(::Details1)
>
> var view = views.get(0)
>
> view()
>
> //Details1()
>
> } } }
,
这似乎可行
// make an alias
typealias ComposableFun = @Composable () -> Unit
// composable function as lambda
val Test : ComposableFun = { Text("Test") }
// list of composable functions
val composableFuns = listOf(Test,Test,Test)
// elsewhere
composableFuns[0]()