You can access to context with define ambientContext
.
Example:
val context = ContextAmbient.current
ContextAmbient
and AmbientContext
has been deprecated.
You can replace them with LocalContext
Example:
val context = LocalContext.current
ContextAmbient.current
is deprecated as of alpha-09
.
AmbientContext.current
is deprecated. I think as of alpha-11
.
LocalContext.current
is how you get the context in a composable now.
The way to do this has been updated. It's now:
val context = LocalContext.current
LocalContext docs
ContextAmbient
and AmbientContext
is deprecated
Update
Now Jetpack way to do this has been updated. It's now:
val context = LocalContext.current
LocalContext.current - is the right approach. But the problem is youcan't use LocalContext.current inside @Composable function
You need to create separate function to use Context
Sample code
@Composablefun DoneButton() {val context = LocalContext.currentButton(onClick = { showToast(context, "Button clicked")}) {Text(name = "Done")}}fun showToast(context: Context, msg: String) {Toast.makeText(context, msg, Toast.LENGTH_LONG).show()}
ContextAmbient.current
has been deprecated, use val context = LocalContext.current
instead.
Some useful if you need get context as Activity from last Android Studio template:
val view = LocalView.current(view.context as Activity).<activity method>
Better solution
fun Context.getActivity(): Activity? = when (this) {is Activity -> thisis ContextWrapper -> baseContext.getActivity()else -> null}val activity = LocalContext.current.getActivity()
For getting context in jetpack compose:
val context = ContextAmbient.current
Working on 0.1.0-dev14
How to use it in TOAST:
@Composablefun cardViewImplementer(item: Int) {val context = ContextAmbient.currentCard(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 = {})}
For accessing the Resource:
Text("Read this string: "+context.getString(R.string.name))
Issues with compose_version = '1.0.0-alpha12'
? AmbientContext
is now LocalContext
val context = LocalContext.currentToast.makeText(context,"Hello Compose",Toast.LENGTH_LONG).show()
You can use the LocalUriHandler
:
val handler = LocalUriHandler.currenthandler Button( onClick = { handler.openUri("https://www.stackoverflow.com") } ) { Text("Open") }