【问题标题】:Why list of Composable does not work in Jetpack Compose?为什么 Composable 列表在 Jetpack Compose 中不起作用?
【发布时间】:2021-01-06 23:17:17
【问题描述】:

我正在尝试学习撰写,但我不明白为什么列表推断类型是 List<Unit> 而不是 List<()->Unit> 。此外,setContent 中的 startingPoint() 不起作用。

    @Composable
    fun AudioScreen() {
        Text(text = "dhgghf")}
    @Composable
    fun SearchScreen() {Text(text = "dhgghf")}
    

    @Composable
    fun startingPoint() {
        val menurou  = listOf(AudioScreen(),SearchScreen())
        menurou[0]
    }

【问题讨论】:

    标签: android android-jetpack-compose


    【解决方案1】:

    那是因为 AudioScreen 和 SearchScreen 函数返回的是 Unit 而不是 () -> Unit。但这与可组合无关..让我们看下面的例子

    fun firstFunction(): () -> Unit = { Unit }
    
    val listForFirstFunction: List<() -> Unit> = listOf(firstFuntion())
    
    fun secondFunction(): Unit = Unit
    
    val listForSecondFunction: List<Unit> = listOf(secondFunction)
    

    因为 firstFunction 返回一个 () -&gt; Unit,所以 listForFirstFunction 的类型得到 () -&gt; Unit。返回 Unit 的 secondFunction 也是如此,因此 listForSecondFunction 的类型是 Unit。

    但是如果你想将 secondFunction 保存为 () -> 单位,你可以这样写:

    val thirdListForFunction = listOf( {secondFunction()} )
    

    然后你就可以写thirdListForFunction[0].invoke()


    而且setContent 中的startingPoint() 不起作用。

    我想你在问为什么menurou[0] 不能正常工作?那是因为menurou[0] 只是返回 Unit,而不是所需的函数 AudioScreen()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 2022-07-29
      • 2022-12-08
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多