From c5715a86ca4ad21372d028bdbcbb17cecc5af68d Mon Sep 17 00:00:00 2001 From: Armand <4831c0@proton.me> Date: Sun, 10 Aug 2025 19:47:01 +0200 Subject: [PATCH] android: widget skeleton --- firka/android/app/build.gradle.kts | 6 +++ .../android/app/src/main/AndroidManifest.xml | 11 +++++ .../app/firka/naplo/glance/AppWidget.kt | 45 +++++++++++++++++++ .../naplo/glance/TimetableWidgetReceiver.kt | 7 +++ .../app/src/main/res/xml/timetable_widget.xml | 7 +++ firka/pubspec.yaml | 1 + 6 files changed, 77 insertions(+) create mode 100644 firka/android/app/src/main/kotlin/app/firka/naplo/glance/AppWidget.kt create mode 100644 firka/android/app/src/main/kotlin/app/firka/naplo/glance/TimetableWidgetReceiver.kt create mode 100644 firka/android/app/src/main/res/xml/timetable_widget.xml diff --git a/firka/android/app/build.gradle.kts b/firka/android/app/build.gradle.kts index 5e2136d..eae246c 100644 --- a/firka/android/app/build.gradle.kts +++ b/firka/android/app/build.gradle.kts @@ -10,6 +10,7 @@ import java.util.zip.ZipOutputStream.STORED plugins { id("com.android.application") id("kotlin-android") + id("org.jetbrains.kotlin.plugin.compose") version "2.2.0" // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } @@ -32,6 +33,10 @@ android { targetCompatibility = JavaVersion.VERSION_17 } + buildFeatures { + compose = true + } + kotlinOptions { jvmTarget = JavaVersion.VERSION_17.toString() } @@ -97,6 +102,7 @@ android { } dependencies { implementation("androidx.wear:wear-ongoing:1.0.0") + implementation("androidx.glance:glance-appwidget:1.1.1") } flutter { diff --git a/firka/android/app/src/main/AndroidManifest.xml b/firka/android/app/src/main/AndroidManifest.xml index 1069cd7..b2c38f1 100644 --- a/firka/android/app/src/main/AndroidManifest.xml +++ b/firka/android/app/src/main/AndroidManifest.xml @@ -31,6 +31,17 @@ + + + + + + + + ? + get() = HomeWidgetGlanceStateDefinition() + + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + GlanceContent(context, currentState()) + } + } + + @Composable + private fun GlanceContent(context: Context, currentState: HomeWidgetGlanceState) { + val prefs = currentState.preferences + val counter = prefs.getInt("counter", 0) + Box(modifier = GlanceModifier.background(Color.White).padding(16.dp)) { + Column { + Text( + counter.toString() + ) + } + } + } + +} \ No newline at end of file diff --git a/firka/android/app/src/main/kotlin/app/firka/naplo/glance/TimetableWidgetReceiver.kt b/firka/android/app/src/main/kotlin/app/firka/naplo/glance/TimetableWidgetReceiver.kt new file mode 100644 index 0000000..eb6371c --- /dev/null +++ b/firka/android/app/src/main/kotlin/app/firka/naplo/glance/TimetableWidgetReceiver.kt @@ -0,0 +1,7 @@ +package app.firka.naplo.glance + +import HomeWidgetGlanceWidgetReceiver + +class TimetableWidgetReceiver : HomeWidgetGlanceWidgetReceiver() { + override val glanceAppWidget = AppWidget() +} \ No newline at end of file diff --git a/firka/android/app/src/main/res/xml/timetable_widget.xml b/firka/android/app/src/main/res/xml/timetable_widget.xml new file mode 100644 index 0000000..d3ae3f0 --- /dev/null +++ b/firka/android/app/src/main/res/xml/timetable_widget.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/firka/pubspec.yaml b/firka/pubspec.yaml index c558c3e..1c2053d 100644 --- a/firka/pubspec.yaml +++ b/firka/pubspec.yaml @@ -58,6 +58,7 @@ dependencies: flutter_screenutil: ^5.9.3 flutter_arc_text: ^0.6.0 flutter_svg: ^1.1.6 + home_widget: ^0.8.0 dev_dependencies: flutter_test: