KevinnZou / compose-webview-multiplatform

WebView for JetBrains Compose Multiplatform
https://kevinnzou.github.io/compose-webview-multiplatform/
Apache License 2.0
523 stars 69 forks source link

WebView navigator brittle #246

Open SamCosta1 opened 3 weeks ago

SamCosta1 commented 3 weeks ago

Under certain conditions the WebViewNavigator does not work at all. Calling the methods on the navigator has no effect.

Reproduction sample (Only reproduced on Desktop)

@Composable
internal fun BasicWebViewSample() {
    val initialUrl = "https://github.com/KevinnZou/compose-webview-multiplatform"
    val state = rememberWebViewState(url = initialUrl)
    val navigator = rememberWebViewNavigator()

    Column {
        IconButton(onClick = {
            navigator.navigateBack()
        }) {
            Icon(
                imageVector = Icons.Default.ArrowBack,
                contentDescription = "Back",
            )
        }

        WebView(
            state = state,
            modifier =
            Modifier
                .fillMaxSize(),
            navigator = navigator,
        )
    }
}
  1. Load the sample
  2. Click into some link on the page (so there's something to navigate back to)
  3. Tap the back arrow - Nothing happens.

Note: In the sample in the repo this works fine, this seems to have something to do with the fact the sample has a navigator passed in as a param.

It seems a change to the value on this line does not trigger a recomposition correctly.

SamC-Apadmi commented 2 weeks ago

@KevinnZou Can this be merged?