Skip to content

Commit 565e5c8

Browse files
committed
feat: add option to enable back navigation in Android WebView
1 parent ec3a6b6 commit 565e5c8

4 files changed

Lines changed: 10 additions & 0 deletions

File tree

demo-shared/src/commonMain/kotlin/io/github/kdroidfilter/webview/demo/App.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ fun App() {
6060
rememberWebViewState("https://httpbin.org/html") {
6161
logSeverity = KLogSeverity.Info
6262
desktopWebSettings.transparent = true
63+
androidWebSettings.goBackEnabled = true
6364
backgroundColor = androidx.compose.ui.graphics.Color.White
6465
}
6566
val jsBridge = rememberWebViewJsBridge(navigator)

webview-compose/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ kotlin {
4848

4949
androidMain.dependencies {
5050
implementation(libs.kotlinx.coroutinesAndroid)
51+
implementation(libs.androidx.activity.compose)
5152
}
5253

5354
jvmMain.dependencies {

webview-compose/src/androidMain/kotlin/io/github/kdroidfilter/webview/web/WebViewAndroid.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.webkit.WebResourceError
88
import android.webkit.WebResourceRequest
99
import android.webkit.WebView
1010
import android.webkit.WebViewClient
11+
import androidx.activity.compose.BackHandler
1112
import androidx.compose.foundation.layout.BoxWithConstraints
1213
import androidx.compose.runtime.Composable
1314
import androidx.compose.runtime.remember
@@ -79,6 +80,12 @@ private fun AndroidWebViewContainer(
7980
val chromeClient = remember { AndroidWebChromeClient(state, navigator) }
8081
val scope = rememberCoroutineScope()
8182

83+
BackHandler(
84+
enabled = state.webSettings.androidWebSettings.goBackEnabled && navigator.canGoBack,
85+
) {
86+
navigator.navigateBack()
87+
}
88+
8289
AndroidView(
8390
factory = { context ->
8491
factory(context).apply {

webview-compose/src/commonMain/kotlin/io/github/kdroidfilter/webview/setting/PlatformWebSettings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ sealed class PlatformWebSettings {
1010
var allowFileAccess: Boolean = false,
1111
var textZoom: Int = 100,
1212
var useWideViewPort: Boolean = false,
13+
var goBackEnabled: Boolean = false
1314
) : PlatformWebSettings()
1415

1516
data class DesktopWebSettings(

0 commit comments

Comments
 (0)