diff --git a/star_lock/lib/mine/mall/lockMall_logic.dart b/star_lock/lib/mine/mall/lockMall_logic.dart index 7fa610c9..43c66f9c 100644 --- a/star_lock/lib/mine/mall/lockMall_logic.dart +++ b/star_lock/lib/mine/mall/lockMall_logic.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; 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'; @@ -41,6 +43,17 @@ class LockMallLogic extends BaseGetXController { } } + //判断webview 是否可以有路由可以回退,无则退出当前页面 + Future canGoBack(bool didPop) async { + bool canGoBack = await state.mallWebView.canGoBack(); + if (canGoBack) { + await state.mallWebView.goBack(); + } else { + Get.back(); + } + return false; + } + @override Future onReady() async { print("ready home"); @@ -51,7 +64,6 @@ class LockMallLogic extends BaseGetXController { void onInit() { print("init home"); super.onInit(); - getMallURLRequest(); } diff --git a/star_lock/lib/mine/mall/lockMall_page.dart b/star_lock/lib/mine/mall/lockMall_page.dart index c222c03d..8c713af0 100644 --- a/star_lock/lib/mine/mall/lockMall_page.dart +++ b/star_lock/lib/mine/mall/lockMall_page.dart @@ -6,7 +6,6 @@ import 'package:star_lock/mine/mall/lockMall_logic.dart'; import 'package:star_lock/tools/titleAppBar.dart'; import 'package:webview_flutter/webview_flutter.dart'; - class LockMallPage extends StatefulWidget { const LockMallPage({Key? key}) : super(key: key); @@ -28,30 +27,33 @@ class _LockMallPageState extends State { // FIXME 如果未登录状态,应先跳转登录页 // FIXME url应该使用接口获取,接口名称 “获取商城跳转地址:/mall/getUrl“ POST请求,无参数,需要登录 // String url = 'https://ge.mall.star-lock.cn/quick_login?id=4&key=1ffb9d37109b8351ebb04ccfcca02c8e'; - return Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: const Color(0xFFFFFFFF), - appBar: TitleAppBar( - barTitle: getWebTitle(), - haveBack: true, - backgroundColor: AppColors.mainColor, - ), - body: Obx(() => Column( - children: [ - Container( - padding: EdgeInsets.only(bottom: 10.w), - child: LinearProgressIndicator( - value: state.webProgress.value, - backgroundColor: Colors.grey, - valueColor: - AlwaysStoppedAnimation(AppColors.mainColor), + return PopScope( + onPopInvoked: logic.canGoBack, + canPop: false, + child: Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: const Color(0xFFFFFFFF), + appBar: TitleAppBar( + barTitle: getWebTitle(), + haveBack: true, + backgroundColor: AppColors.mainColor, + ), + 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), - ), - ], - ))); + 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 6a541767..e0c4bb72 100644 --- a/star_lock/lib/mine/mall/lockMall_state.dart +++ b/star_lock/lib/mine/mall/lockMall_state.dart @@ -8,7 +8,7 @@ class LockMallState { var webProgress = 0.0.obs; late WebViewController mallWebView = initWebViewController(); - //初始化webview控制器 + //初始化webView控制器 WebViewController initWebViewController() { WebViewController allWebView = WebViewController(); allWebView.setJavaScriptMode(JavaScriptMode.unrestricted);