如何在Jetpack Compose中获取当前状态或上下文

fun createListItem(itemIndex: Int) {
Padding(left = 8.dp,right = 8.dp,top = 8.dp,bottom = 8.dp) {
    FlexRow(crossAxisAlignment = CrossAxisAlignment.Center) {
        expanded(1.0f) {
            Text("Item $itemIndex")
        }
        inflexible {
            Button(
                "Button $itemIndex",style = ContainedButtonStyle(),onClick = {
                    Toast.makeText(
                        this@Mainactivity,"Item name $itemIndex",Toast.LENGTH_SHORT
                    ).show()
                })

        }
    }
  }
}

我尝试用普通的方法做烤面包。但是我遇到了错误,我尝试了很多倍数源,但是失败了。

caonidaye001 回答:如何在Jetpack Compose中获取当前状态或上下文

ContextAmbientAmbientContext 已弃用

您可以将它们替换为

val context = LocalContext.current
,

ContextAmbient.currentalpha-09 起已弃用。

AmbientContext.current 已弃用。我认为 alpha-11

LocalContext.current 是您现在如何在可组合中获取上下文。

,

此方法已更新。现在是:

val context = ContextAmbient.current

ContextAmbient docs

,

您可以使用定义ambientContext访问上下文。

示例:

val context = +ambient(ContextAmbient)
,

ContextAmbient.current 已被弃用,请改用 val context = AmbientContext.current

,

compose_version = '1.0.0-alpha12' 有问题吗? AmbientContext 现在是 LocalContext

,

我认为您永远不会以正常方式显示Toast。 Jetpack Compose使用一个自定义的Kotlin编译器插件将这些可组合函数转换为应用程序的UI元素。例如,Text()函数由Compose UI library定义。 Jetpack Compose处于开发的早期阶段。您可以在下面的链接中查看包含示例和集成测试检查的Jetpack的所有仓库

https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-master-dev/ui

有关Jetpack组成材料演示的信息,请检查此链接

https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-master-dev/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos

,

要在jetpack中获取上下文,请执行以下操作:

val context = ContextAmbient.current

致力于0.1.0-dev14

如何在 TOAST 中使用它:

@Composable
fun cardViewImplementer(item: Int) {
   val context = ContextAmbient.current
   Card(
     shape = RoundedCornerShape(10.dp),modifier = Modifier.padding(10.dp)
   ) {
     Box(
        modifier = Modifier
            .fillMaxWidth()
            .drawShadow(5.dp)
            .clickable(onClick = {
                Toast.makeText(context,"Clicked $item",Toast.LENGTH_SHORT).show()
            }),children = {

        })
}

用于访问资源

Text("Read this string: "+context.getString(R.string.name))
,
val context = LocalContext.current
Toast.makeText(context,"Hello Compose",Toast.LENGTH_LONG).show()
,

LocalContext.current - 是正确的方法。但问题是你 不能在@Composable 函数中使用 LocalContext.current

您需要创建单独的函数才能使用上下文

示例代码

@Composable
fun DoneButton(){
    val context = LocalContext.current
    Button(onClick = { showToast(context,"Button clicked")}) {
        Text(name = "Done")
    }
}

fun showToast(context: Context,msg:String){
    Toast.makeText(context,msg,Toast.LENGTH_LONG).show()
}
本文链接:https://www.f2er.com/3146909.html

大家都在问