目前我正在学习jetpack compose,并且遇到了多个错误,就像我上面所说的那样。 从这里的帖子中我了解到,您不能在例如“函数”中使用@Composables,例如onClick。
这至少回答了我关于此错误的部分问题,但仍有一个问题仍然存在。 现在我正在为 DropDownMenu 编写代码并使用 TrailingIcon 并且我得到了相同的消息。我猜这可能是因为值 (TrailingIcon) 不是 TextField 的兼容值。
有人知道我应该做什么吗?如果它的值类型错误,我应该使用哪一种?
提前致谢!
ExposedDropdownMenu
的官方文档中,提供了代码示例。我复制在下面,请特别检查您是否使用了正确的material3
导入:
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExposedDropdownMenuBox
import androidx.compose.material3.ExposedDropdownMenuDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MenuAnchorType
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
val options = listOf("Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread")
var expanded by remember { mutableStateOf(false) }
var text by remember { mutableStateOf(options[0]) }
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = it },
) {
TextField(
modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryNotEditable),
value = text,
onValueChange = {},
readOnly = true,
singleLine = true,
label = { Text("Label") },
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
colors = ExposedDropdownMenuDefaults.textFieldColors(),
)
ExposedDropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
options.forEach { option ->
DropdownMenuItem(
text = { Text(option, style = MaterialTheme.typography.bodyLarge) },
onClick = {
text = option
expanded = false
},
contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding,
)
}
}
}
特别检查你是否有
import androidx.compose.material3.TextField
import androidx.compose.material3.ExposedDropdownMenuDefaults