diff --git a/star_lock/android/app/build.gradle b/star_lock/android/app/build.gradle index a165aa84..20f27d80 100644 --- a/star_lock/android/app/build.gradle +++ b/star_lock/android/app/build.gradle @@ -56,19 +56,6 @@ android { keyAlias = 'starlock' keyPassword '123456' } - // 下面的local、pre、sky、xhj 都是自定义变量,自身不起任何作用,而是看哪里引用了它们 - local { - storeFile file("starlock.keystore") - storePassword '123456' - keyAlias = 'starlock' - keyPassword '123456' - } - pre { - storeFile file("starlock.keystore") - storePassword '123456' - keyAlias = 'starlock' - keyPassword '123456' - } sky { // CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown storeFile file("sky.jks") @@ -91,21 +78,21 @@ android { local { dimension "flavor-type" applicationId "com.starlock.lock.local" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁-local" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.local" } dev { dimension "flavor-type" applicationId "com.starlock.lock.dev" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁-dev" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.dev" } pre { dimension "flavor-type" applicationId "com.starlock.lock.pre" - signingConfig signingConfigs.pre + signingConfig signingConfigs.debug resValue "string", "app_name", "星锁" manifestPlaceholders.JPUSH_PKGNAME = "com.starlock.lock.pre" } @@ -202,9 +189,9 @@ android { // 真实的解决办法 minifyEnabled false shrinkResources false - productFlavors.local.signingConfig signingConfigs.pre - productFlavors.dev.signingConfig signingConfigs.pre - productFlavors.pre.signingConfig signingConfigs.pre + productFlavors.local.signingConfig signingConfigs.debug + productFlavors.dev.signingConfig signingConfigs.debug + productFlavors.pre.signingConfig signingConfigs.debug productFlavors.sky.signingConfig signingConfigs.sky productFlavors.xhj.signingConfig signingConfigs.xhj } diff --git a/star_lock/images/lan/lan_en.json b/star_lock/images/lan/lan_en.json index 85988c5d..24497a72 100644 --- a/star_lock/images/lan/lan_en.json +++ b/star_lock/images/lan/lan_en.json @@ -765,5 +765,9 @@ "自动亮屏":"Automatic bright screen", "亮屏持续时间":"Screen on time", "逗留警告":"Stay warning", - "异常警告":"Abnormal warning" + "异常警告":"Abnormal warning", + + "关锁":"关锁", + "功能":"功能", + "配件":"配件" } diff --git a/star_lock/images/lan/lan_keys.json b/star_lock/images/lan/lan_keys.json index b3e878a5..9cde7ffe 100644 --- a/star_lock/images/lan/lan_keys.json +++ b/star_lock/images/lan/lan_keys.json @@ -764,5 +764,8 @@ "自动亮屏":"自动亮屏", "亮屏持续时间":"亮屏持续时间", "逗留警告":"逗留警告", - "异常警告":"异常警告" + "异常警告":"异常警告", + "关锁":"Close Lock", + "功能":"Function", + "配件":"Parts" } diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index e123d2af..bc29a5f5 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -767,5 +767,8 @@ "自动亮屏":"自动亮屏", "亮屏持续时间":"亮屏持续时间", "逗留警告":"逗留警告", - "异常警告":"异常警告" + "异常警告":"异常警告", + "关锁":"关锁", + "功能":"功能", + "配件":"配件" } diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 42383acc..77e4129a 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -141,7 +141,56 @@ class _LockDetailPageState extends State Widget build(BuildContext context) { state.widgetContext = context; loadData(); + return F.sw(defaultCall: () => skWidget(), xhjCall: () => xhjWidget()); + } + //鑫泓佳布局 + Widget xhjWidget() { + return Scaffold( + backgroundColor: Colors.white, + body: SingleChildScrollView( + child: Obx(() { + return Column( + children: [ + SizedBox( + height: 45.h, + ), + infoView(), + SizedBox( + height: 35.h, + ), + labelGridView('功能'.tr, getBottomWidget()), + labelListView('配件'.tr, getAttachmentWidget()), + SizedBox( + height: 45.h, + ), + Padding( + padding: EdgeInsets.only(left: 52.w, right: 52.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + buttonView('关锁'.tr, () { + if (state.openDoorBtnisUneable.value == true) { + startUnLock(); + } + }), + buttonView('开锁'.tr, () { + if (state.openDoorBtnisUneable.value == true) { + startOpenLock(); + } + }), + ], + ), + ), + ], + ); + }), + ), + ); + } + + //斯凯布局 + Widget skWidget() { return ListView( children: [ Visibility( @@ -195,12 +244,10 @@ class _LockDetailPageState extends State child: PageView( scrollDirection: Axis.horizontal, controller: state.pageController, - // child: Row( children: [ Obx(() => bottomWidget()), attachmentWidget(), ], - // ), ), )), ], @@ -227,6 +274,212 @@ class _LockDetailPageState extends State ); } + //操作锁按钮 + Widget buttonView(String text, VoidCallback? onPressed) { + bool openLockBtnState = state.openLockBtnState.value != 0; + return ElevatedButton( + onPressed: openLockBtnState ? null : onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: openLockBtnState + ? AppColors.mainBackgroundColor + : AppColors.mainColor, + shape: RoundedRectangleBorder( + // 设置按钮的形状 + borderRadius: BorderRadius.circular(8), // 圆角的大小 + )), + child: SizedBox( + height: 0.12.sh, + width: 0.12.sh, + child: Center( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + text, + style: TextStyle( + color: + openLockBtnState ? AppColors.mainColor : Colors.white), + ), + if (openLockBtnState) + Container( + margin: EdgeInsets.only(left: 15.w), + width: 15.r, + height: 15.r, + child: CircularProgressIndicator( + strokeWidth: 3.5, + color: AppColors.mainColor, + ), + ) + ], + ), + ), + ), + ); + } + + Widget infoView() { + return Padding( + padding: EdgeInsets.only(left: 35.w, right: 10.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + state.lockAlias.value, + style: TextStyle( + fontSize: 28.sp, + fontWeight: FontWeight.w400, + color: state.isOpenPassageMode.value == 1 + ? AppColors.openPassageModeColor + : AppColors.darkGrayTextColor), + ), + SizedBox( + height: 15.h, + ), + adminInfoView(center: false, max: false), + ], + ), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlavorsImg( + child: Image.asset( + showElectricIcon(state.electricQuantity.value), + width: 30.w, + height: 24.w), + ), + SizedBox(width: 2.w), + Text("${state.electricQuantity.value}%", + style: TextStyle( + fontSize: 18.sp, color: AppColors.darkGrayTextColor)), + SizedBox(width: 2.w), + FlavorsImg( + child: Icon( + Icons.info, // 使用内置的 warning 图标,它是一个叹号 + color: AppColors.mainColor, // 设置图标颜色为红色 + size: 25.w, // 设置图标大小为 30 + ), + ), + SizedBox(width: 20.w), + ], + ), + SizedBox( + height: 15.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlavorsImg( + child: Image.asset( + showElectricIcon(state.electricQuantity.value), + width: 30.w, + height: 24.w), + ), + SizedBox(width: 2.w), + Text("--%", + style: TextStyle( + fontSize: 18.sp, color: AppColors.darkGrayTextColor)), + SizedBox(width: 2.w), + FlavorsImg( + child: Icon( + Icons.info, // 使用内置的 warning 图标,它是一个叹号 + color: AppColors.mainColor, // 设置图标颜色为红色 + size: 25.w, // 设置图标大小为 30 + ), + ), + SizedBox(width: 20.w), + ], + ) + ], + ) + ], + ), + ); + } + + //带标签的 GridView 布局 + Widget labelGridView(String text, List children) { + return Column( + children: [ + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: EdgeInsets.only( + left: 40.w, + top: 20.h, + bottom: 20.h, + ), + child: Text(text))), + SizedBox( + height: 200.h, + child: Row( + children: [ + Expanded( + child: GridView.count( + padding: EdgeInsets.only(left: 15.w, right: 15.w), + crossAxisCount: 2, + childAspectRatio: 0.7, + crossAxisSpacing: 25.h, + mainAxisSpacing: 25.w, + scrollDirection: Axis.horizontal, + children: children), + ), + Padding( + padding: EdgeInsets.only(left: 0.w, right: 4.w), + child: const Icon(Icons.arrow_forward_ios_rounded), + ), + ], + ), + ), + ], + ); + } + + //带标签的 ListView 布局 + Widget labelListView(String text, List children) { + return Column( + children: [ + Align( + alignment: Alignment.topLeft, + child: Padding( + padding: EdgeInsets.only( + left: 40.w, + top: 20.h, + bottom: 20.h, + ), + child: Text(text))), + SizedBox( + height: 100.h, + child: Row( + children: [ + Expanded( + child: GridView.count( + padding: EdgeInsets.only(left: 15.w, right: 15.w), + crossAxisCount: 1, + childAspectRatio: 0.7, + crossAxisSpacing: 25.h, + mainAxisSpacing: 25.w, + scrollDirection: Axis.horizontal, + children: children), + ), + Padding( + padding: EdgeInsets.only(left: 0.w, right: 4.w), + child: Icon(Icons.arrow_forward_ios_rounded), + ), + ], + ), + ), + ], + ); + } + Widget topWidget() { return Column( children: [ @@ -421,10 +674,12 @@ class _LockDetailPageState extends State ); } - Widget adminInfoView({bool center = true, bool add = false}) { + Widget adminInfoView( + {bool center = true, bool max = true, bool add = false}) { return Row( mainAxisAlignment: center ? MainAxisAlignment.center : MainAxisAlignment.start, + mainAxisSize: max ? MainAxisSize.max : MainAxisSize.min, children: [ Image.asset( 'images/icon_electronicKey_admin.png', @@ -539,7 +794,7 @@ class _LockDetailPageState extends State return SizedBox( width: ScreenUtil().screenWidth - 20.w, child: GridView.count( - crossAxisCount: F.sw(defaultCall: () => 4, xhjCall: () => 3), + crossAxisCount: 4, // childAspectRatio: 3, crossAxisSpacing: 20.w, mainAxisSpacing: 0.h, @@ -584,14 +839,12 @@ class _LockDetailPageState extends State return SizedBox( width: ScreenUtil().screenWidth - 20.w, child: GridView.count( - crossAxisCount: F.sw(defaultCall: () => 4, xhjCall: () => 3), + crossAxisCount: 4, // childAspectRatio: 3, crossAxisSpacing: 25.h, mainAxisSpacing: 0.h, physics: const NeverScrollableScrollPhysics(), - children: F.sw( - defaultCall: () => getBottomWidget(), - xhjCall: () => getBottomWidget().reversed.toList())), + children: getBottomWidget()), ); } @@ -835,8 +1088,6 @@ class _LockDetailPageState extends State // Widget bottomItem(String iconUrl, String name, bool openDoorBtnisUneable, bool bottomBtnisEable, Function() onClick) { - var width = F.sw(defaultCall: () => 42.w, xhjCall: () => 63.w); - var height = F.sw(defaultCall: () => 42.h, xhjCall: () => 63.h); return GestureDetector( onTap: openDoorBtnisUneable ? (bottomBtnisEable @@ -852,12 +1103,13 @@ class _LockDetailPageState extends State crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( - width: width, - height: height, + width: 42.w, + height: 42.h, child: FlavorsImg( + black: true, child: Image.asset(iconUrl, - width: width, - height: height, + width: 42.w, + height: 42.w, color: openDoorBtnisUneable ? (bottomBtnisEable ? AppColors.mainColor @@ -916,28 +1168,6 @@ class _LockDetailPageState extends State return 'images/main/icon_lockElectricLevel_5.png'; } -//开锁成功弹出的小界面 - void _showFullScreenOverlay(BuildContext context) { - showModalBottomSheet( - context: context, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (BuildContext context) { - return GestureDetector( - onTap: () { - Navigator.of(context).pop(); // 关闭底部表单 - }, - child: Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: Colors.black.withOpacity(0.5), - child: _unlockSuccessWidget(), - ), - ); - }, - ); - } - Widget _unlockSuccessWidget() { return Stack( alignment: Alignment.center, @@ -1026,8 +1256,6 @@ class _LockDetailPageState extends State @override void dispose() { - // TODO: implement dispose - /// 取消路由订阅 Get.log("LockDetailPage===dispose"); AppRouteObserver().routeObserver.unsubscribe(this); @@ -1036,7 +1264,6 @@ class _LockDetailPageState extends State state.replySubscription.cancel(); state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent! .cancel(); - if (state.animationController != null) { state.animationController!.dispose(); state.animationController = null; diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart index b5f3aab5..b7d82663 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart @@ -36,7 +36,8 @@ class _StarLockMainPageState extends State with BaseWidget { final state = Get.find().state; Future getHttpData() async { - LockListInfoGroupEntity? lockListInfoGroupEntity = await Storage.getLockMainListData(); + LockListInfoGroupEntity? lockListInfoGroupEntity = + await Storage.getLockMainListData(); // Get.log("lockListInfoGroupEntity:${lockListInfoGroupEntity!.groupList!.length}"); if (lockListInfoGroupEntity != null) { var localLockListInfoGroupEntity = lockListInfoGroupEntity; @@ -71,44 +72,49 @@ class _StarLockMainPageState extends State with BaseWidget { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: const Color(0xFFF5F5F5), - appBar: widget.showAppBar - ? TitleAppBar( - barTitle: F.navTitle, - haveBack: false, - haveOtherLeftWidget: true, - leftWidget: Builder( - builder: (context) => IconButton( - icon: Image.asset( - "images/main/mainLeft_menu_icon.png", - color: Colors.white, - width: 44.w, - height: 44.w, - ), - onPressed: () { - Scaffold.of(context).openDrawer(); - }, - )), - backgroundColor: AppColors.mainColor, - ) - : null, - drawer: widget.showDrawer - ? Drawer( - width: 1.sw / 3 * 2, - child: const StarLockMinePage(), - ) - : null, - body: EasyRefreshTool( - onRefresh: () { - SchedulerBinding.instance.addPostFrameCallback((_) { - // 更新状态的代码 - logic.pageNo = 1; - getHttpData(); - }); - }, - child: getDataReturnUI(state.dataLength.value)), - ); + Widget child = EasyRefreshTool( + onRefresh: () { + SchedulerBinding.instance.addPostFrameCallback((_) { + // 更新状态的代码 + logic.pageNo = 1; + getHttpData(); + }); + }, + // child: getDataReturnUI(state.dataLength.value)); + child: getDataReturnUI(state.dataLength.value)); + if (widget.showAppBar || widget.showDrawer) { + child = Scaffold( + backgroundColor: const Color(0xFFF5F5F5), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: F.navTitle, + haveBack: false, + haveOtherLeftWidget: true, + leftWidget: Builder( + builder: (context) => IconButton( + icon: Image.asset( + "images/main/mainLeft_menu_icon.png", + color: Colors.white, + width: 44.w, + height: 44.w, + ), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + )), + backgroundColor: AppColors.mainColor, + ) + : null, + drawer: widget.showDrawer + ? Drawer( + width: 1.sw / 3 * 2, + child: const StarLockMinePage(), + ) + : null, + body: child, + ); + } + return child; } Widget getDataReturnUI(int type) { 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 31602b82..3d01639f 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 @@ -1,6 +1,9 @@ import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart'; import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -12,6 +15,29 @@ class LockMainXHJLogic extends BaseGetXController { update(); } + //打开设备弹窗 + void openEquipment() { + showModalBottomSheet( + context: Get.context!, + isScrollControlled: true, + backgroundColor: Colors.white, + builder: (context) { + return ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.r), + topRight: Radius.circular(16.r), + ), + child: SizedBox( + height: Get.height * 0.7, + child: StarLockMainPage( + showAppBar: false, + showDrawer: false, + ), + ), + ); + }); + } + @override void onReady() { super.onReady(); 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 0e050f5f..7eae2768 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 @@ -41,14 +41,25 @@ class _StarLockMainXHJPageState extends State builder: (LockMainXHJLogic logic) { return Scaffold( backgroundColor: const Color(0xFFF5F5F5), + floatingActionButton: FloatingActionButton( + shape: const CircleBorder(), + onPressed: () { + logic.openEquipment(); + }, + backgroundColor: AppColors.mainColor, + tooltip: TranslationLoader.lanKeys!.device!.tr, + child: const Icon( + Icons.key, + color: AppColors.darkGrayTextColor, + ), + ), body: SafeArea( bottom: false, child: Stack( children: [ pageView( - widget: StarLockMainPage( + widget: LockMallPage( showAppBar: false, - showDrawer: false, ), logic: logic, index: 0, @@ -60,20 +71,13 @@ class _StarLockMainXHJPageState extends State logic: logic, index: 1, ), - pageView( - widget: LockMallPage( - showAppBar: false, - ), - logic: logic, - index: 2, - ), pageView( widget: MinePersonInfoPage( showAppBar: false, showAbout: true, ), logic: logic, - index: 3, + index: 2, ), ], ), @@ -93,26 +97,18 @@ class _StarLockMainXHJPageState extends State top: false, child: Row( children: [ - // navigationBarItem(Icons.start, '场景', false, () { - // logic.setIndex(0); - // }), - - navigationBarItem(Icons.devices, - TranslationLoader.lanKeys!.device!.tr, logic, 0, () { + navigationBarItem(Icons.shopping_cart, '商城'.tr, logic, 0, + () { logic.setIndex(0); }), navigationBarItem(Icons.message, TranslationLoader.lanKeys!.message!.tr, logic, 1, () { logic.setIndex(1); }), - navigationBarItem(Icons.shopping_cart, '商城'.tr, logic, 2, + navigationBarItem(Icons.account_circle, '我的'.tr, logic, 2, () { logic.setIndex(2); }), - navigationBarItem(Icons.account_circle, '我的'.tr, logic, 3, - () { - logic.setIndex(3); - }), ], ), ), diff --git a/star_lock/lib/widget/flavors_img.dart b/star_lock/lib/widget/flavors_img.dart index 72f2d7bb..54dc7323 100644 --- a/star_lock/lib/widget/flavors_img.dart +++ b/star_lock/lib/widget/flavors_img.dart @@ -4,18 +4,21 @@ import 'package:flutter/material.dart'; import 'package:star_lock/flavors.dart'; class FlavorsImg extends StatelessWidget { - FlavorsImg({required this.child, key}); + FlavorsImg({required this.child, this.black = false, key}); + bool black; Widget child; - ColorFilterGenerator myFilter = ColorFilterGenerator(name: "xhj", filters: [ - // ColorFilterAddons.addictiveColor(1, 22, 93), - ColorFilterAddons.addictiveColor(1, 22, 93), - // ColorFilterAddons.grayscale(),z - ]); + ColorFilterGenerator myFilter = + ColorFilterGenerator(name: "xhj", filters: []); @override Widget build(BuildContext context) { + myFilter = ColorFilterGenerator(name: "xhj", filters: [ + black + ? ColorFilterAddons.addictiveColor(-255, -255, -255) + : ColorFilterAddons.addictiveColor(1, 22, 93), + ]); if (F.appFlavor != Flavor.xhj) { return child; } diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index a01d9c95..826617e3 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -34,8 +34,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 1.0.28+2024041702:打包给欧阳回归测试 # 1.0.27+2024041702 打包星星锁提审华为 # 1.0.27+2024041703 打包星星锁提审ios +# 1.0.27+2024042204 打包星星锁提审ios与 android -version: 1.0.27+2024041803 +version: 1.0.27+2024042204 environment: sdk: '>=2.12.0 <3.0.0'