From 751db80b4a14256eee591f7e93491b6e8fb5603d Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Tue, 3 Sep 2024 08:43:37 +0800 Subject: [PATCH] opt: webview --- lib/pages/webview/controller.dart | 12 ++++++------ lib/pages/webview/view.dart | 14 +++++++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/pages/webview/controller.dart b/lib/pages/webview/controller.dart index 936ced84..5ce14adc 100644 --- a/lib/pages/webview/controller.dart +++ b/lib/pages/webview/controller.dart @@ -9,7 +9,7 @@ import 'package:webview_flutter/webview_flutter.dart'; class WebviewController extends GetxController { String url = ''; RxString type = ''.obs; - String pageTitle = ''; + RxString pageTitle = ''.obs; String uaType = ''; final WebViewController controller = WebViewController(); RxInt loadProgress = 0.obs; @@ -19,9 +19,9 @@ class WebviewController extends GetxController { @override void onInit() { super.onInit(); - url = Get.parameters['url']!; - type.value = Get.parameters['type']!; - pageTitle = Get.parameters['pageTitle']!; + url = Get.parameters['url'] ?? ''; + type.value = Get.parameters['type'] ?? ''; + pageTitle.value = Get.parameters['pageTitle'] ?? ''; uaType = Get.parameters['uaType'] ?? 'mob'; webviewInit(uaType: uaType); @@ -54,7 +54,7 @@ class WebviewController extends GetxController { } } }, - onPageFinished: (String url) { + onPageFinished: (String url) async { if (type.value == 'liveRoom') { print("adding"); //注入js @@ -68,6 +68,7 @@ class WebviewController extends GetxController { document.querySelector('#message-navbar').remove(); ''').then((value) => print(value)); } + pageTitle.value = await controller.getTitle() ?? ''; }, // 加载完成 onUrlChange: (UrlChange urlChange) async { @@ -92,5 +93,4 @@ class WebviewController extends GetxController { ) ..loadRequest(Uri.parse(url)); } - } diff --git a/lib/pages/webview/view.dart b/lib/pages/webview/view.dart index a034d468..27e696f8 100644 --- a/lib/pages/webview/view.dart +++ b/lib/pages/webview/view.dart @@ -16,15 +16,23 @@ class WebviewPage extends StatefulWidget { class _WebviewPageState extends State { final WebviewController _webviewController = Get.put(WebviewController()); + @override + void dispose() { + Get.delete(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: false, titleSpacing: 0, - title: Text( - _webviewController.pageTitle, - style: Theme.of(context).textTheme.titleMedium, + title: Obx( + () => Text( + _webviewController.pageTitle.value, + style: Theme.of(context).textTheme.titleMedium, + ), ), actions: [ const SizedBox(width: 4),