我有一个带有后退按钮的导航栏,可以正确导航我的应用程序。有一个打开 Web 视图的屏幕,我尝试编辑导航栏,以便它先在 Web 视图中导航,然后再返回应用程序。
但是,我不知道如何让它识别 url.com/start 与 url.com/ DifferentSection 不同。除非整个 url 发生变化(例如 diffURL.com),否则我找到的任何方法都无法识别浏览同一基本 url 的不同部分。我假设我用来识别更改的任何内置函数仅在存在完整页面重定向时运行。
我废弃了所有代码并重新开始,因此任何对此的开始建议都会很棒。
要在 Jetpack Compose 中导航回应用程序之前处理 WebView 中的导航,您需要分别管理 WebView 的后退导航和应用程序的后退导航。这是实现此目的的简化方法:
我在下面附上了示例可组合项
@Composable
fun WebViewScreen(
url: String,
onBackPressed: () -> Unit
) {
var webView: WebView? by remember { mutableStateOf(null) }
BackHandler(enabled = webView?.canGoBack() == true) {
webView?.goBack()
}
AndroidView(
modifier = Modifier.fillMaxSize(),
factory = { context ->
WebView(context).apply {
webViewClient = WebViewClient()
loadUrl(url)
webView = this
}
}
)
LaunchedEffect(Unit) {
snapshotFlow { webView?.canGoBack() }
.collect { canGoBack ->
if (canGoBack == false) {
onBackPressed()
}
}
}
}