From c8962d509c9600ea5888d4dc39b61e0a856b658d Mon Sep 17 00:00:00 2001 From: xkeyC <3334969096@qq.com> Date: Sat, 13 Dec 2025 16:14:12 +0800 Subject: [PATCH] fix: webview --- .../home_game_login_dialog_ui_model.dart | 1 + rust/src/webview/webview_impl.rs | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.dart b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.dart index 9e41cb3..e188619 100644 --- a/lib/ui/home/dialogs/home_game_login_dialog_ui_model.dart +++ b/lib/ui/home/dialogs/home_game_login_dialog_ui_model.dart @@ -166,6 +166,7 @@ class HomeGameLoginUIModel extends _$HomeGameLoginUIModel { applicationSupportDir: appGlobalState.applicationSupportDir!, appVersionData: appGlobalState.networkVersionData!, ); + await Future.delayed(Duration(milliseconds: 500)); await webViewModel.launch(url, appGlobalState.networkVersionData!); } diff --git a/rust/src/webview/webview_impl.rs b/rust/src/webview/webview_impl.rs index bd9ccc6..7871a53 100644 --- a/rust/src/webview/webview_impl.rs +++ b/rust/src/webview/webview_impl.rs @@ -434,6 +434,16 @@ fn run_webview_loop( let proxy = proxy.clone(); move |event, url| { if url == "about:blank" { + if matches!(event, PageLoadEvent::Finished) { + // if url is about:blank, show loading + let loading_script = format!( + r#"document.open(); document.write({}); document.close();"#, + serde_json::to_string(LOADING_PAGE_HTML).unwrap_or_default() + ); + let _ = proxy.send_event(UserEvent::Command( + WebViewCommand::ExecuteScript(loading_script), + )); + } return; } @@ -603,13 +613,6 @@ fn run_webview_loop( .build(&window) .expect("Failed to create webview"); - // Show loading page while waiting for Navigate command - let loading_script = format!( - r#"document.open(); document.write({}); document.close();"#, - serde_json::to_string(LOADING_PAGE_HTML).unwrap_or_default() - ); - let _ = webview.evaluate_script(&loading_script); - let webview = Arc::new(webview); let webview_cmd = Arc::clone(&webview);