diff --git a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart index bc82bb14..191de81c 100644 --- a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart @@ -56,7 +56,7 @@ class _StarLockMainXHJPageState extends State widget: SafeArea( bottom: false, child: LockMallPage( - showAppBar: false, + allowReturn: false, ), ), logic: logic, diff --git a/star_lock/lib/mine/mall/lockMall_logic.dart b/star_lock/lib/mine/mall/lockMall_logic.dart index f7f61251..1532c65e 100644 --- a/star_lock/lib/mine/mall/lockMall_logic.dart +++ b/star_lock/lib/mine/mall/lockMall_logic.dart @@ -17,7 +17,7 @@ class LockMallLogic extends BaseGetXController { late LockMallState state; LockMallLogic({required bool allowReturn}) - : state = LockMallState(allowReturn: allowReturn); + : state = LockMallState(allowReturn: allowReturn ); //获取商城跳转地址 Future getMallURLRequest() async { @@ -35,6 +35,7 @@ class LockMallLogic extends BaseGetXController { }, onPageFinished: (String url) { state.webProgress.value = 1.0; + refreshGoBack(); }, onWebResourceError: (WebResourceError error) {}, onNavigationRequest: (NavigationRequest request) async { @@ -99,12 +100,25 @@ class LockMallLogic extends BaseGetXController { bool canGoBack = await state.mallWebView.canGoBack(); if (canGoBack) { await state.mallWebView.goBack(); - } else { - if (state.allowReturn) Get.back(); + } else if (state.allowReturn) { + Get.back(); } + refreshGoBack(); return false; } + //刷新当前路由状态 + void refreshGoBack(){ + //如果属于一直返回按钮,则根据是否有路由可以回退刷新 + if(state.allowReturn){ + return; + } + state.mallWebView.canGoBack().then((value) { + state.canGoBack = value; + update(); + }); + } + @override Future onReady() async { super.onReady(); diff --git a/star_lock/lib/mine/mall/lockMall_page.dart b/star_lock/lib/mine/mall/lockMall_page.dart index 6d648536..911f0594 100644 --- a/star_lock/lib/mine/mall/lockMall_page.dart +++ b/star_lock/lib/mine/mall/lockMall_page.dart @@ -30,36 +30,38 @@ class _LockMallPageState extends State { return GetBuilder( init: LockMallLogic(allowReturn: widget.allowReturn), builder: (LockMallLogic logic) { - return PopScope( - onPopInvoked: logic.canGoBack, - canPop: false, - child: Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: const Color(0xFFFFFFFF), - appBar: widget.showAppBar - ? TitleAppBar( - barTitle: getWebTitle(logic), - haveBack: true, - backgroundColor: AppColors.mainColor, - ) - : null, - body: Obx(() => Column( - children: [ - Container( - padding: EdgeInsets.only(bottom: 10.w), - child: LinearProgressIndicator( - value: logic.state.webProgress.value, - backgroundColor: Colors.grey, - valueColor: AlwaysStoppedAnimation( - AppColors.mainColor), - ), - ), - Expanded( - child: WebViewWidget( - controller: logic.state.mallWebView), - ), - ], - ))), + return Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: const Color(0xFFFFFFFF), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: getWebTitle(logic), + haveBack: logic.state.canGoBack || logic.state.allowReturn, + backgroundColor: AppColors.mainColor, + backAction: () => logic.canGoBack(false), + ) + : null, + body: Obx(() => Column( + children: [ + PopScope( + onPopInvoked: logic.canGoBack, + canPop: false, + child: SizedBox(), + ), + Container( + padding: EdgeInsets.only(bottom: 10.w), + child: LinearProgressIndicator( + value: logic.state.webProgress.value, + backgroundColor: Colors.grey, + valueColor: + AlwaysStoppedAnimation(AppColors.mainColor), + ), + ), + Expanded( + child: WebViewWidget(controller: logic.state.mallWebView), + ), + ], + )), ); }); } diff --git a/star_lock/lib/mine/mall/lockMall_state.dart b/star_lock/lib/mine/mall/lockMall_state.dart index a9636f15..9864ccc7 100644 --- a/star_lock/lib/mine/mall/lockMall_state.dart +++ b/star_lock/lib/mine/mall/lockMall_state.dart @@ -9,6 +9,7 @@ class LockMallState { var lockMallUrl = "".obs; var webProgress = 0.0.obs; bool allowReturn; + bool canGoBack = false; late WebViewController mallWebView = initWebViewController(); //初始化webView控制器