From e8458be2c69954401da1ef8198cbb296519f9c52 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Fri, 10 May 2024 14:18:44 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=9D=9E=E9=A6=96?= =?UTF-8?q?=E6=AC=A1=E8=BF=9B=E5=85=A5APP=E4=B9=9F=E4=BC=9A=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=9A=90=E7=A7=81=E5=8D=8F=E8=AE=AE=E6=A1=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98=202=EF=BC=8C=E9=AB=98=E7=BA=A7=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E8=B4=AD=E4=B9=B0=E7=9B=B4=E6=8E=A5=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E9=AB=98=E7=BA=A7=E5=8A=9F=E8=83=BD=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E8=80=8C=E9=9D=9Eshop=E9=A1=B5=E9=9D=A2=203?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E5=88=97=E8=A1=A8=E7=9A=84=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E5=BA=94=E6=8F=90=E7=A4=BA=E8=A6=81=E5=BC=80=E9=AB=98=E7=BA=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=90=A6=E5=88=99=E4=B8=8D=E5=8F=AF=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E7=AE=A1=E7=90=86=E5=91=98=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorizedAdministratorList_page.dart | 192 ++++++++---------- .../mine/mineSet/mineSet/mineSet_logic.dart | 4 +- .../advancedFeaturesWeb_logic.dart | 4 +- .../advancedFeaturesWeb_page.dart | 5 +- .../advancedFeaturesWeb_state.dart | 4 +- .../starLockApplication.dart | 6 +- star_lock/lib/tools/appFirstEnterHandle.dart | 74 ++----- .../lib/tools/showCupertinoAlertView.dart | 49 +++++ star_lock/lib/tools/storage.dart | 8 +- 9 files changed, 164 insertions(+), 182 deletions(-) diff --git a/star_lock/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart b/star_lock/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart index f1b54bf9..6b94317e 100644 --- a/star_lock/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart +++ b/star_lock/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:get/get.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart'; import 'package:star_lock/tools/noData.dart'; +import 'package:star_lock/tools/showCupertinoAlertView.dart'; import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; @@ -23,14 +24,15 @@ class AuthorizedAdministratorListPage extends StatefulWidget { _AuthorizedAdministratorListPageState(); } -class _AuthorizedAdministratorListPageState extends State { +class _AuthorizedAdministratorListPageState + extends State { final logic = Get.put(AuthorizedAdministratorListLogic()); final state = Get.find().state; Future getHttpData() async { var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); if (isDemoMode == false) { - logic.mockNetworkDataRequest().then((AuthorizedAdminListEntity value){ + logic.mockNetworkDataRequest().then((AuthorizedAdminListEntity value) { setState(() {}); }); } @@ -60,7 +62,9 @@ class _AuthorizedAdministratorListPageState extends State state.itemDataList.value.isEmpty - ? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h) + ? NoData( + noDataHeight: 1.sh - + ScreenUtil().statusBarHeight - + ScreenUtil().bottomBarHeight - + 190.h - + 64.h) : SlidableAutoCloseBehavior( - child: ListView.separated( - itemCount: state.itemDataList.value.length, - itemBuilder: (c, index) { - AuthorizedAdminListItem authorizedAdminListItem = state.itemDataList.value[index]; + child: ListView.separated( + itemCount: state.itemDataList.value.length, + itemBuilder: (c, index) { + AuthorizedAdminListItem authorizedAdminListItem = + state.itemDataList.value[index]; - return Slidable( - key:ValueKey(authorizedAdminListItem.uid), - endActionPane: ActionPane( - extentRatio: 0.2, - motion: const ScrollMotion(), - children: [ - SlidableAction( - onPressed: (BuildContext context){ - ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时删除其发送的所有钥匙,钥匙删除后不能恢复', (isAllData) { - logic.deleteAdministratorRequest(authorizedAdminListItem.uid.toString(), isAllData ? 1 : 0); - }); - }, - backgroundColor: Colors.red, - foregroundColor: Colors.white, - label: '删除', - padding: EdgeInsets.only(left: 5.w, right: 5.w), - ), - ], + return Slidable( + key: ValueKey(authorizedAdminListItem.uid), + endActionPane: ActionPane( + extentRatio: 0.2, + motion: const ScrollMotion(), + children: [ + SlidableAction( + onPressed: (BuildContext context) { + ShowTipView() + .showDeleteAdministratorIsHaveAllDataDialog( + '同时删除其发送的所有钥匙,钥匙删除后不能恢复', (isAllData) { + logic.deleteAdministratorRequest( + authorizedAdminListItem.uid.toString(), + isAllData ? 1 : 0); + }); + }, + backgroundColor: Colors.red, + foregroundColor: Colors.white, + label: '删除', + padding: EdgeInsets.only(left: 5.w, right: 5.w), + ), + ], + ), + child: _electronicKeyItem(authorizedAdminListItem), + ); + }, + separatorBuilder: (BuildContext context, int index) { + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); + }, ), - child: _electronicKeyItem(authorizedAdminListItem), - ); - }, - separatorBuilder: (BuildContext context, int index) { - return const Divider( - height: 1, - color: AppColors.greyLineColor, - ); - }, - ), - )); + )); } Widget _electronicKeyItem(AuthorizedAdminListItem itemData) { return GestureDetector( - onTap: () { - Navigator.pushNamed(context, Routers.administratorDetailsPage, arguments: {'itemData': itemData}).then((value) { - setState(() { - logic.pageNo = 1; - getHttpData(); + onTap: () async { + //高级功能 + var isVip = await Storage.getBool(saveIsVip); + if (isVip == true) { + Get.toNamed(Routers.administratorDetailsPage, + arguments: {'itemData': itemData})?.then((value) { + setState(() { + logic.pageNo = 1; + getHttpData(); + }); }); - }); + } else { + ShowCupertinoAlertView().advancedFeatureAlert(); + } }, child: Container( height: 100.h, color: Colors.white, - // margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w), - // decoration: const BoxDecoration( - // color: Colors.white, - // borderRadius: BorderRadius.circular(10.w), - // ), child: Row( children: [ - SizedBox(width: 30.w,), + SizedBox( + width: 30.w, + ), Image.asset('images/controls_user.png', width: 60.w, height: 60.w), SizedBox(width: 20.w), Expanded( @@ -193,24 +176,18 @@ class _AuthorizedAdministratorListPageState extends State { resizeToAvoidBottomInset: false, backgroundColor: const Color(0xFFFFFFFF), appBar: TitleAppBar( - barTitle: - logic.state.isShop.value == true ? '高级功能'.tr : '实名认证'.tr, + barTitle: logic.state.isVipShop.value == true + ? '高级功能'.tr + : '实名认证'.tr, haveBack: true, backgroundColor: AppColors.mainColor, backAction: () => logic.canGoBack(false), diff --git a/star_lock/lib/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_state.dart b/star_lock/lib/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_state.dart index 75c9b027..eacc61ca 100644 --- a/star_lock/lib/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_state.dart +++ b/star_lock/lib/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_state.dart @@ -8,7 +8,7 @@ class AdvancedFeaturesWebState { var webProgress = 0.0.obs; bool allowReturn = true; late WebViewController vipBuyWebView = initWebViewController(); - var isShop = true.obs; //是否为高级功能购买页面 + var isVipShop = true.obs; //是否为高级功能购买页面 bool canGoBack = false; //初始化webView控制器 @@ -23,7 +23,7 @@ class AdvancedFeaturesWebState { AdvancedFeaturesWebState() { Map map = Get.arguments; if (map['isShop'] != null) { - isShop.value = map['isShop']; + isVipShop.value = map['isShop']; } } } diff --git a/star_lock/lib/starLockApplication/starLockApplication.dart b/star_lock/lib/starLockApplication/starLockApplication.dart index d4a7d389..8fa11d42 100644 --- a/star_lock/lib/starLockApplication/starLockApplication.dart +++ b/star_lock/lib/starLockApplication/starLockApplication.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:get/get.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/login/login/starLock_login_page.dart'; import 'package:star_lock/login/login/starLock_login_xhj_page.dart'; @@ -31,7 +30,6 @@ class _StarLockApplicationState extends State { @override Widget build(BuildContext context) { - AppFirstEnterHandle().getAppFirstEnter(context, isAgreePrivacy); getAgreePrivacyShowUpdate(); return FutureBuilder( @@ -48,6 +46,8 @@ class _StarLockApplicationState extends State { xhjCall: () => const StarLockMainXHJPage()); } else { // 如果用户未登录,返回登录页面 + AppFirstEnterHandle().getAppFirstEnter(isAgreePrivacy); + return F.sw( defaultCall: () => const StarLockLoginPage(), xhjCall: () => const StarLockLoginXHJPage()); @@ -73,7 +73,7 @@ class _StarLockApplicationState extends State { Future getAgreePrivacyShowUpdate() async { final data = await Storage.getString(isAgreePrivacy); if (data == isAgreePrivacy) { - AppFirstEnterHandle().getAppFirstEnter(context, isShowUpdateVersion); + AppFirstEnterHandle().getAppFirstEnter(isShowUpdateVersion); } } } diff --git a/star_lock/lib/tools/appFirstEnterHandle.dart b/star_lock/lib/tools/appFirstEnterHandle.dart index 815df5c6..7df8acf6 100644 --- a/star_lock/lib/tools/appFirstEnterHandle.dart +++ b/star_lock/lib/tools/appFirstEnterHandle.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; @@ -14,24 +13,24 @@ import 'package:star_lock/tools/storage.dart'; import '../versionUndate/versionUndateTool.dart'; class AppFirstEnterHandle { - Future getAppFirstEnter(BuildContext widgetContext, String flagStr) async { + Future getAppFirstEnter(String flagStr) async { var getFlag = await Storage.getString(flagStr); switch (flagStr) { case isAgreePrivacy: // 隐私协议 { if (getFlag != isAgreePrivacy) { - showPrivacyAgreementAlert(widgetContext); + showPrivacyAgreementAlert(); } } break; case isAgreePosition: // 位置权限 { - if (getFlag != isAgreePosition) showPositionAlert(widgetContext); + if (getFlag != isAgreePosition) showPositionAlert(); } break; case isAgreeCamera: // 相机权限 { - if (getFlag != isAgreeCamera) showCameraAlert(widgetContext); + if (getFlag != isAgreeCamera) showCameraAlert(); } break; case isShowUpdateVersion: // 版本更新 @@ -45,9 +44,9 @@ class AppFirstEnterHandle { } //隐私协议弹窗 - void showPrivacyAgreementAlert(BuildContext widgetContext) { + void showPrivacyAgreementAlert() { showCupertinoDialog( - context: widgetContext, + context: Get.context!, builder: (context) { return PopScope( canPop: false, @@ -118,7 +117,7 @@ class AppFirstEnterHandle { onPressed: () { Storage.setString(isAgreePrivacy, isAgreePrivacy); Navigator.of(context).pop(); - getAppFirstEnter(context, isShowUpdateVersion); + getAppFirstEnter(isShowUpdateVersion); }, ), ], @@ -188,7 +187,7 @@ class AppFirstEnterHandle { onPressed: () { Storage.setString(isAgreePrivacy, isAgreePrivacy); Navigator.of(context).pop(); - getAppFirstEnter(context, isShowUpdateVersion); + getAppFirstEnter(isShowUpdateVersion); }, ), ], @@ -196,9 +195,9 @@ class AppFirstEnterHandle { } //位置权限弹窗 - void showPositionAlert(BuildContext widgetContext) { + void showPositionAlert() { showCupertinoDialog( - context: widgetContext, + context: Get.context!, builder: (context) { return PopScope( canPop: false, @@ -226,9 +225,9 @@ class AppFirstEnterHandle { } //相机权限弹窗 - void showCameraAlert(BuildContext widgetContext) { + void showCameraAlert() { showCupertinoDialog( - context: widgetContext, + context: Get.context!, builder: (context) { return PopScope( canPop: false, @@ -255,55 +254,6 @@ class AppFirstEnterHandle { ); } - //微信公众号二维码弹窗 - void showQRImageAlert(BuildContext widgetContext, String qrCodeUrl) { - showCupertinoModalPopup( - context: widgetContext, - builder: (context) { - return CupertinoActionSheet( - actions: [ - Container( - color: Colors.white, // 设置底色为白色 - child: CupertinoActionSheetAction( - child: Container( - margin: const EdgeInsets.all(0), - child: Column( - children: [ - SizedBox( - height: 60.h, - ), - Image.network( - qrCodeUrl, - width: 400.w, - height: 400.w, - ), - SizedBox( - height: 20.h, - ), - Padding( - padding: EdgeInsets.only(left: 60.w, right: 60.w), - child: Text( - '开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置'.tr, - style: - TextStyle(fontSize: 24.sp, color: Colors.black), - )), - SizedBox( - height: 60.h, - ) - ], - ), - ), - onPressed: () { - Navigator.of(context).pop(); - }, - ), - ), - ], - ); - }, - ); - } - // _launchURL(String url) async { // if (await canLaunchUrl(Uri.parse(url))) { // await launchUrl(Uri.parse(url)); diff --git a/star_lock/lib/tools/showCupertinoAlertView.dart b/star_lock/lib/tools/showCupertinoAlertView.dart index 76c2a799..8e35501e 100644 --- a/star_lock/lib/tools/showCupertinoAlertView.dart +++ b/star_lock/lib/tools/showCupertinoAlertView.dart @@ -8,6 +8,55 @@ import 'package:star_lock/app_settings/app_colors.dart'; typedef AuthInfoCallback = void Function(String idCard, String name); class ShowCupertinoAlertView { + //微信公众号二维码弹窗 + void showQRImageAlert(BuildContext widgetContext, String qrCodeUrl) { + showCupertinoModalPopup( + context: widgetContext, + builder: (context) { + return CupertinoActionSheet( + actions: [ + Container( + color: Colors.white, // 设置底色为白色 + child: CupertinoActionSheetAction( + child: Container( + margin: const EdgeInsets.all(0), + child: Column( + children: [ + SizedBox( + height: 60.h, + ), + Image.network( + qrCodeUrl, + width: 400.w, + height: 400.w, + ), + SizedBox( + height: 20.h, + ), + Padding( + padding: EdgeInsets.only(left: 60.w, right: 60.w), + child: Text( + '开启微信接收报警消息需要先关注斯凯智能锁微信公众号,请保存二维码并使用微信扫一扫设置'.tr, + style: + TextStyle(fontSize: 24.sp, color: Colors.black), + )), + SizedBox( + height: 60.h, + ) + ], + ), + ), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ), + ], + ); + }, + ); + } + //高级功能弹窗 void advancedFeatureAlert() { showCupertinoDialog( diff --git a/star_lock/lib/tools/storage.dart b/star_lock/lib/tools/storage.dart index 82e44149..fdfb542d 100644 --- a/star_lock/lib/tools/storage.dart +++ b/star_lock/lib/tools/storage.dart @@ -26,7 +26,7 @@ const saveIsVip = "saveIsVip"; //是否是VIP const saveUserLoginData = "userLoginData"; const saveLockMainListData = "lockMainListData"; -const isOpenDeBug = "isOpenDeBug";//是否打开 debug +const isOpenDeBug = "isOpenDeBug"; //是否打开 debug class Storage { Storage._internal(); @@ -145,6 +145,12 @@ class Storage { static Future clearAll() async { SharedPreferences sp = await SharedPreferences.getInstance(); sp.clear(); + + // 重新设置需要保留的数据 + if (isAgreePrivacy != null) { + //退出登录不清除隐私协议同意状态 + await setString(isAgreePrivacy, isAgreePrivacy); + } } static Future getUid() async {