From f49f7712b711d0d451897c20fff77e20d65a4e1b Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Fri, 3 May 2024 09:21:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E9=91=AB=E6=B3=93?= =?UTF-8?q?=E4=BD=B3=E9=A6=96=E9=A1=B5=E4=BA=8C=E6=AC=A1=E9=80=80=E5=87=BA?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/ios/Podfile.lock | 2 +- star_lock/lib/flavors.dart | 2 ++ .../lockMain/xhj/lockMain_xhj_logic.dart | 2 ++ .../lockMain/xhj/lockMain_xhj_page.dart | 1 + star_lock/lib/mine/mall/lockMall_logic.dart | 30 +++++++++++++++---- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index e962a17c..c1b43709 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -316,7 +316,7 @@ SPEC CHECKSUMS: flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82 - fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db + fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 fluwx: daa284756ce53442b3d0417ceeda66e981906811 google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458 GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 diff --git a/star_lock/lib/flavors.dart b/star_lock/lib/flavors.dart index 3f1e4d38..9d350755 100644 --- a/star_lock/lib/flavors.dart +++ b/star_lock/lib/flavors.dart @@ -28,6 +28,8 @@ class F { static String get name => appFlavor?.name ?? ''; + static bool get isXHJ => appFlavor == Flavor.xhj; + //便捷判断并返回值 static dynamic sw( {required fCallFunction defaultCall, fCallFunction? xhjCall}) { diff --git a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart index 3d01639f..0e28f379 100644 --- a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart @@ -15,6 +15,8 @@ class LockMainXHJLogic extends BaseGetXController { update(); } + bool get isMall => state.index ==1; + //打开设备弹窗 void openEquipment() { showModalBottomSheet( 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 8f604e46..4cf3cd43 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 @@ -25,6 +25,7 @@ class StarLockMainXHJPage extends StatefulWidget { class _StarLockMainXHJPageState extends State with BaseWidget { + @override void initState() { super.initState(); diff --git a/star_lock/lib/mine/mall/lockMall_logic.dart b/star_lock/lib/mine/mall/lockMall_logic.dart index 1532c65e..5f7741e3 100644 --- a/star_lock/lib/mine/mall/lockMall_logic.dart +++ b/star_lock/lib/mine/mall/lockMall_logic.dart @@ -1,8 +1,12 @@ import 'dart:convert'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluwx/fluwx.dart'; import 'package:get/get.dart'; +import 'package:star_lock/flavors.dart'; +import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_logic.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'; @@ -16,8 +20,10 @@ import '../../tools/baseGetXController.dart'; class LockMallLogic extends BaseGetXController { late LockMallState state; + DateTime? _lastPressedAt; // 记录上一次按下返回键的时间 + LockMallLogic({required bool allowReturn}) - : state = LockMallState(allowReturn: allowReturn ); + : state = LockMallState(allowReturn: allowReturn); //获取商城跳转地址 Future getMallURLRequest() async { @@ -98,19 +104,33 @@ class LockMallLogic extends BaseGetXController { //判断webview 是否可以有路由可以回退,无则退出当前页面 Future canGoBack(bool didPop) async { bool canGoBack = await state.mallWebView.canGoBack(); - if (canGoBack) { + bool isMall = true; + if (Get.isRegistered() && F.isXHJ) { + isMall = Get.find().isMall; + } + if (canGoBack && isMall) { await state.mallWebView.goBack(); - } else if (state.allowReturn) { + } else if (state.allowReturn && isMall) { Get.back(); + } else { + if (_lastPressedAt == null || + DateTime.now().difference(_lastPressedAt!) > Duration(seconds: 2)) { + // 如果两次返回键时间间隔大于 2 秒,则提示再次按下返回键退出 + _lastPressedAt = DateTime.now(); + showToast('再返回一次退出${F.title}'); + return false; // 阻止返回操作 + } + SystemNavigator.pop(); + return true; } refreshGoBack(); return false; } //刷新当前路由状态 - void refreshGoBack(){ + void refreshGoBack() { //如果属于一直返回按钮,则根据是否有路由可以回退刷新 - if(state.allowReturn){ + if (state.allowReturn) { return; } state.mallWebView.canGoBack().then((value) {