From c9ca7228f63e73c590ff7020555a9b94e7bc3d0c Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Tue, 27 Feb 2024 11:50:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=96=B0=E5=A2=9E=E9=A1=B6=E9=83=A8=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/lib/mine/mall/lockMall_logic.dart | 22 +++++++++++++++++++++ star_lock/lib/mine/mall/lockMall_page.dart | 18 ++++++++++++++++- star_lock/lib/mine/mall/lockMall_state.dart | 5 ++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/star_lock/lib/mine/mall/lockMall_logic.dart b/star_lock/lib/mine/mall/lockMall_logic.dart index 6cb9aef5..360678fb 100644 --- a/star_lock/lib/mine/mall/lockMall_logic.dart +++ b/star_lock/lib/mine/mall/lockMall_logic.dart @@ -1,6 +1,7 @@ import 'package:star_lock/mine/mall/lockMall_entity.dart'; import 'package:star_lock/mine/mall/lockMall_state.dart'; import 'package:star_lock/network/api_repository.dart'; +import 'package:webview_flutter/webview_flutter.dart'; import '../../tools/baseGetXController.dart'; @@ -12,6 +13,27 @@ class LockMallLogic extends BaseGetXController { LockMallDataEntity entity = await ApiRepository.to.getMallURLData(); if (entity.errorCode!.codeIsSuccessful) { state.lockMallUrl.value = entity.data!.url!; + state.mallWebView.setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + // Update loading bar. + state.webProgress.value = progress / 100; + }, + onPageStarted: (String url) { + state.webProgress.value = 0.0; + }, + onPageFinished: (String url) { + state.webProgress.value = 1.0; + }, + onWebResourceError: (WebResourceError error) {}, + onNavigationRequest: (NavigationRequest request) { + // if (request.url.startsWith('https://www.youtube.com/')) { + // return NavigationDecision.prevent; + // } + return NavigationDecision.navigate; + }, + ), + ); state.mallWebView.loadRequest(Uri.parse(state.lockMallUrl.value)); } } diff --git a/star_lock/lib/mine/mall/lockMall_page.dart b/star_lock/lib/mine/mall/lockMall_page.dart index 37cc9364..8270ac89 100644 --- a/star_lock/lib/mine/mall/lockMall_page.dart +++ b/star_lock/lib/mine/mall/lockMall_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/mine/mall/lockMall_logic.dart'; @@ -36,7 +37,22 @@ class _LockMallPageState extends State { haveBack: true, backgroundColor: AppColors.mainColor, ), - body: WebViewWidget(controller: state.mallWebView)); + body: Obx(() => Column( + children: [ + Container( + padding: EdgeInsets.only(bottom: 10.w), + child: LinearProgressIndicator( + value: state.webProgress.value, + backgroundColor: Colors.grey, + valueColor: + AlwaysStoppedAnimation(AppColors.mainColor), + ), + ), + Expanded( + child: WebViewWidget(controller: state.mallWebView), + ), + ], + ))); } String getWebTitle() { diff --git a/star_lock/lib/mine/mall/lockMall_state.dart b/star_lock/lib/mine/mall/lockMall_state.dart index 2ad6312d..20ddb81b 100644 --- a/star_lock/lib/mine/mall/lockMall_state.dart +++ b/star_lock/lib/mine/mall/lockMall_state.dart @@ -1,8 +1,11 @@ +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:webview_flutter/webview_flutter.dart'; class LockMallState { var lockMallUrl = "".obs; + var webProgress = 0.0.obs; late WebViewController mallWebView = WebViewController() - ..setJavaScriptMode(JavaScriptMode.unrestricted); + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(Colors.white); }