Advertisement
paulon

WebView Page Reloading on NavHost

Aug 23rd, 2023
1,972
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.66 KB | None | 0 0
  1.  
  2. @Composable
  3. fun HomeScreen(webviewCustomProxyConfig: MutableState<CustomProxyConfig?>, modifier: Modifier = Modifier) {
  4.     var isLoading by remember { mutableStateOf(true) }
  5.     lateinit var url: String
  6.     val navController = rememberNavController()
  7.  
  8.     LaunchedEffect(Unit) {
  9.         // Delay for 2 seconds to remove the loading screen
  10.         delay(2000)
  11.         isLoading = false
  12.     }
  13.  
  14.     if(isLoading){
  15.         LoadingScreen()
  16.     }else {
  17.         webviewCustomProxyConfig.value?.let { config ->
  18.             val webViewConfig = CustomProxyConfig(config.url, config.ip, config.port)
  19.             url = webViewConfig.url
  20.         }
  21.  
  22.         val state = rememberWebViewState(url = url)
  23.         val navigator = rememberWebViewNavigator()
  24.         val webClient = remember {
  25.             object : AccompanistWebViewClient() {
  26.                 override fun onPageStarted(
  27.                     view: WebView,
  28.                     url: String?,
  29.                     favicon: Bitmap?
  30.                 ) {
  31.                     super.onPageStarted(view, url, favicon)
  32.                     Log.d("Accompanist WebView", "Page started loading for $url")
  33.                 }
  34.             }
  35.         }
  36.  
  37.         NavHost(navController, startDestination = "home") {
  38.             composable("home") {
  39.                 WebViewScreen(
  40.                     navController,
  41.                     url = url,
  42.                     department = "Staging",
  43.                     state,
  44.                     navigator,
  45.                     webClient
  46.                 )
  47.             }
  48.             composable("settings") {
  49.                 SettingScreen(navController)
  50.             }
  51.         }
  52.  
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement