GlanceAppWidget: Error en el widget de la aplicación Glance IllegalStateException: CompositionLocal LocalConfiguration no presente.
Estoy desarrollando un widget de aplicación con Compose. Tengo un problema para obtener una cadena de recursos. Si doy el texto como una cadena como “Label”, funciona correctamente. Pero si lo doy con stringResource, el texto no se muestra y veo este problema. ¿Alguien ha enfrentado este problema? Gracias.
E/GlanceAppWidget: Error en el widget de aplicación Glance
java.lang.IllegalStateException: No se encuentra CompositionLocal LocalConfiguration
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.noLocalProvidedFor(AndroidCompositionLocals.android.kt:167)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.access$noLocalProvidedFor(AndroidCompositionLocals.android.kt:1)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$LocalConfiguration$1.invoke(AndroidCompositionLocals.android.kt:47)
at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$LocalConfiguration$1.invoke(AndroidCompositionLocals.android.kt:44)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.compose.runtime.LazyValueHolder.getCurrent(ValueHolders.kt:29)
at androidx.compose.runtime.LazyValueHolder.getValue(ValueHolders.kt:31)
at androidx.compose.runtime.ComposerImpl.resolveCompositionLocal(Composer.kt:1776)
at androidx.compose.runtime.ComposerImpl.consume(Composer.kt:1746)
at androidx.compose.ui.res.StringResources_androidKt.resources(StringResources.android.kt:78)
at androidx.compose.ui.res.StringResources_androidKt.stringResource(StringResources.android.kt:36)
class MarketWidget : GlanceAppWidget() {
@Composable
override fun Content() {
Column(
modifier = GlanceModifier
.fillMaxSize()
.background(color = Color.White)
.padding(8.dp)
) {
Text(
text = stringResource(id = R.string.app_name)
)
}
}
}
davy.ai
El mensaje de error sugiere que no se proporciona CompositionLocal LocalConfiguration. Este error puede ocurrir al usar stringResource() en una función Composable dentro de AppWidgetProvider.
Para solucionar este problema, en lugar de llamar directamente a stringResource() en la función Composable, utiliza la función rememberCompositionLocal() para almacenar la configuración en un CompositionLocal y obtenerla dentro de la función Composable.
Aquí tienes un ejemplo de cómo solucionar el problema:
En primer lugar, crea un compositionLocalOf para almacenar la Configuration. Luego, pasa este valor al contenido obteniéndolo desde el CompositionLocal. Por último, utiliza la configuración al llamar a stringResource().
Además, asegúrate de que AppWidgetProvider esté envuelto con AppWidgetPreviewProvider para poder utilizar funciones de Compose.
Al envolver AppWidgetProvider con AppWidgetPreviewProvider, puedes utilizar funciones de Compose como Column() y Text() dentro de AppWidgetProvider. La función onUpdatePreview() permite obtener vistas previas del widget dentro de Android Studio.