Skip to content

Commit b718acb

Browse files
authored
Merge pull request #124 from KevinnZou/feature/dark_mode_support
Feature/dark mode support
2 parents b511854 + a7cfda9 commit b718acb

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

sample/shared/src/commonMain/kotlin/com/kevinnzou/sample/WebViewApp.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import com.multiplatform.webview.web.rememberWebViewState
1212
@Composable
1313
internal fun WebViewApp() {
1414
// WebViewSample()
15-
BasicWebViewSample()
16-
// BasicWebViewWithHTMLSample()
15+
// BasicWebViewSample()
16+
BasicWebViewWithHTMLSample()
1717
}
1818

1919
@Composable

sample/shared/src/commonMain/kotlin/com/kevinnzou/sample/res/HtmlRes.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ object HtmlRes {
2020
text-align: center;
2121
color: ffffff;
2222
}
23+
@media (prefers-color-scheme: dark) {
24+
body {
25+
background-color: white;
26+
}
27+
h1, h2 {
28+
color: black;
29+
}
30+
}
2331
</style>
2432
</head>
2533
<body>

webview/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ kotlin {
5151
dependencies {
5252
api("androidx.activity:activity-compose:1.7.2")
5353
api("androidx.webkit:webkit:1.8.0")
54+
implementation("androidx.webkit:webkit:1.9.0")
5455
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines")
5556
}
5657
}

webview/src/androidMain/kotlin/com/multiplatform/webview/web/AccompanistWebView.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.multiplatform.webview.web
22

33
import android.content.Context
4+
import android.content.res.Configuration
45
import android.graphics.Bitmap
56
import android.os.Build
67
import android.view.ViewGroup
@@ -18,6 +19,8 @@ import androidx.compose.runtime.rememberCoroutineScope
1819
import androidx.compose.ui.Modifier
1920
import androidx.compose.ui.graphics.toArgb
2021
import androidx.compose.ui.viewinterop.AndroidView
22+
import androidx.webkit.WebSettingsCompat
23+
import androidx.webkit.WebViewFeature
2124
import com.multiplatform.webview.jsbridge.WebViewJsBridge
2225
import com.multiplatform.webview.util.KLogger
2326

@@ -198,6 +201,19 @@ fun AccompanistWebView(
198201
domStorageEnabled = it.domStorageEnabled
199202
}
200203
}
204+
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
205+
val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
206+
if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {
207+
WebSettingsCompat.setForceDark(this.settings, WebSettingsCompat.FORCE_DARK_ON)
208+
} else {
209+
WebSettingsCompat.setForceDark(this.settings, WebSettingsCompat.FORCE_DARK_OFF)
210+
}
211+
212+
WebSettingsCompat.setForceDarkStrategy(
213+
this.settings,
214+
WebSettingsCompat.DARK_STRATEGY_WEB_THEME_DARKENING_ONLY,
215+
)
216+
}
201217
}.also {
202218
val androidWebView = AndroidWebView(it, scope, webViewJsBridge)
203219
state.webView = androidWebView

0 commit comments

Comments
 (0)