8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

错误:必须在可组合上下文中调用可组合函数

darren 2月前

43 0

\'@Composable 调用只能在 @Composable 函数的上下文中进行\'我是 jetpack compose 的新手,经常收到此错误 \'@Composable 调用只能在 @Composable 函数的上下文中进行...

\' @Composable 调用只能在 @Composable 函数的上下文中进行 \'

我是 jetpack compose 的新手,在文本字段中添加图标和标签时不断收到此错误“@Composable 调用只能在 @Composable 函数的上下文中发生”。

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun EditNumberField(
    value: String,
    @StringRes label: Int,
    @DrawableRes icon: Int,
    keyboardOptions: KeyboardOptions,
    onValueChange: (String) -> Unit,
    modifier: Modifier = Modifier
){
    TextField(
        value = value,
        label = { Text(stringResource(label)) },
        icon = {  Icon(painter = painterResource(id = icon), contentDescription = null) },
        keyboardOptions = keyboardOptions,
        onValueChange = onValueChange,
        singleLine = true,
        modifier = modifier,
        colors = TextFieldDefaults.textFieldColors(
            containerColor = Color(0xFFBDFCC9))
    )
}

\'TextField(), label = {Text()}, icon = {Icon()}\' 这些行用红色下划线标出,显示了上面提到的错误。

帖子版权声明 1、本帖标题:错误:必须在可组合上下文中调用可组合函数
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由darren在本站《android》版块原创发布, 转载请注明出处!
最新回复 (0)
  • Y H 2月前 0 只看Ta
    引用 2

    Composable 没有名为 icon 的 TextField 。您可以根据需要使用 leadingIcon trailingIcon ,然后解决显示的错误。

    以下是 TextField 材料 3 的文档中的可组合内容

    fun TextField(
        value: TextFieldValue,
        onValueChange: (TextFieldValue) -> Unit,
        label: @Composable (() -> Unit)? = null,
        leadingIcon: @Composable (() -> Unit)? = null,
        trailingIcon: @Composable (() -> Unit)? = null,
        //... other paramteres
    ) {  } //... content of the composable
    
  • 由于另一个人已经给出了答案,因此我将您的代码修改为此。

    使用此可组合函数。

    @Composable
    fun EditNumericField(
        value: String,
        label: Int,
        icon: Painter,
        keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
        onValueChange: (String) -> Unit,
        modifier: Modifier = Modifier
    ) {
        TextField(
            value = value,
            onValueChange = onValueChange,
            label = { Text(text = stringResource(id = label)) },
            leadingIcon = { Icon(painter = icon, contentDescription = "Icons") },
            singleLine = true,
            modifier = modifier,
            colors = TextFieldDefaults.colors(
                focusedContainerColor = Color(0xFFBDFCC9),
                unfocusedContainerColor = Color(0xFFBDFCC9)
            ),
            keyboardOptions = keyboardOptions
        )
    }
    

    这是函数调用。

    EditNumericField(
        value = "Any value",
        label = R.string.app_name,
        icon = painterResource(id = R.drawable.ic_launcher_foreground),
        keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
        onValueChange = { },
        modifier = Modifier
    )
    

    我希望这可以帮助你。

返回
作者最近主题: