簡體   English   中英

在 Box scope 內時不能使用隱式或顯式接收器

[英]Can't use implicit or explicit receiver when inside Box scope

我正在學習基於 Jetpack Compose 的 Jetbrains 的“Compose Multiplatform”。

一些信息

  • Kotlin:1.5.31
  • 智能:2021.3.1

所以在構建下面的代碼時,我得到了錯誤:

fun Modifier.align(alignment: Alignment.Horizontal): Modifier' can't be called in this context by implicit receiver. Use the explicit one if necessary

此錯誤顯示在此行:

Icon(Icons.Filled.Close, "", Modifier.align(Alignment.CenterHorizontally))

我嘗試將完整的 package 添加到像androidx.compose.ui.Modifier.align()這樣的Modifier中,但它仍然對接收器出錯。 如果它不在RowColumnBox布局內,則此錯誤會消失。 我還沒有嘗試過很多其他人,看看他們是否也有問題。 這個框架仍然是 alpha 我相信所以我只是想確保在 github 上發布問題之前我沒有遺漏任何東西,因為我找不到其他人引用這個問題。

復制:

  1. 創建新項目(撰寫多平台應用程序)
  2. 用下面的代碼替換 App.kt (common -> src -> commonMain -> kotlin)
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Menu
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp

@Composable
fun App() {

    Scaffold(
        topBar = {
            TopAppBar {
                IconButton(onClick = {}) {
                    Icon(Icons.Filled.Menu, contentDescription = "")
                }
            }
        },
        drawerContent = {
            Box(modifier = Modifier.padding(8.dp), contentAlignment = Alignment.Center) {
                Text("Some Text", fontWeight = FontWeight.Bold)
                Icon(Icons.Filled.Close, "", Modifier.align(Alignment.CenterHorizontally))
            }

            Divider()
        }
    ) { }
}

Modifier.align 更像是 FrameLayout 中子視圖的layout_gravity 它取決於外層(在組合中,您有 Box、Row、Column)。

Alignment.CenterHorizontally不能在 BoxScope 中使用。

查看Modifier.align ,它有三個定義:

見參數, CenterHorizo ntally 是androidx.compose.ui.Alignment.Horizontal 。在 BoxScope 中你只能使用androidx.compose.ui.Alignment

  • TopStart
  • 頂部中心
  • 高端
  • 中心開始
  • 中心
  • 中心端
  • 底部開始
  • 底部中心
  • 底端

這是一個修改器游樂場。 https://github.com/c5inco/Compose-Modifiers-Playground

在此處輸入圖像描述 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM