Skip to content

Instantly share code, notes, and snippets.

class MutableStateDemoWidget : GlanceAppWidget() {
companion object {
private val checkBoxKey = "IS_CHECKED"
}
override var stateDefinition: GlanceStateDefinition<*> = PreferencesGlanceStateDefinition
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
glanceAppWidget.updateAppWidgetState(context, id){
it[booleanPreferencesKey(checkBoxKey)] = isChecked
}
glanceAppWidget.update(context, id)
val checkBoxKey = "IS_CHECKED"
val prefs = currentState<Preferences>()
val isChecked = prefs[booleanPreferencesKey(checkBoxKey)]!!
override var stateDefinition: GlanceStateDefinition<*> = PreferencesGlanceStateDefinition
class UIResultDemoWidget: GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
val uiResultState = remember {
mutableStateOf<UIResult<String>>(UIResult.Loading)
}
val coroutineScope = rememberCoroutineScope()
LaunchedEffect(key1 = Unit){
coroutineScope.launch {
sealed class UIResult<out T> {
object Loading : UIResult<Nothing>()
data class Success<T>(val data: T) : UIResult<T>()
data class Error(val error: String) : UIResult<Nothing>()
}
@shreyas-android
shreyas-android / MutableStateDemoWidgetExample.kt
Created November 5, 2023 07:06
MutableStateDemoWidgetExample
class MutableStateDemoWidget: GlanceAppWidget() {
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
val isCheck = remember {
mutableStateOf(false)
}
Row(modifier = GlanceModifier.background(ColorProvider(Color.White, Color.Black))) {
val checkText = if (isCheck.value) "Checked" else "Unchecked"
CheckBox(
class MonthCalendarDemoWidget : GlanceAppWidget() {
override val sizeMode: SizeMode
get() = SizeMode.Exact
override suspend fun provideGlance(context: Context, id: GlanceId) {
provideContent {
val milliSecond = remember {
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
----
---
---
<receiver android:name=".appwidget.MonthCalendarDemoReceiver"
android:exported="true">
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout"
android:minWidth="200dp"
android:minHeight="120dp"
android:minResizeWidth="200dp"
android:minResizeHeight="120dp"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="0"
android:widgetCategory="home_screen">