This commit is contained in:
魏少阳 2024-04-22 15:38:38 +08:00
commit f3a06d13c7
10 changed files with 384 additions and 128 deletions

View File

@ -56,19 +56,6 @@ android {
keyAlias = 'starlock'
keyPassword '123456'
}
// localpreskyxhj
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
}

View File

@ -765,5 +765,9 @@
"自动亮屏":"Automatic bright screen",
"亮屏持续时间":"Screen on time",
"逗留警告":"Stay warning",
"异常警告":"Abnormal warning"
"异常警告":"Abnormal warning",
"关锁":"关锁",
"功能":"功能",
"配件":"配件"
}

View File

@ -764,5 +764,8 @@
"自动亮屏":"自动亮屏",
"亮屏持续时间":"亮屏持续时间",
"逗留警告":"逗留警告",
"异常警告":"异常警告"
"异常警告":"异常警告",
"关锁":"Close Lock",
"功能":"Function",
"配件":"Parts"
}

View File

@ -767,5 +767,8 @@
"自动亮屏":"自动亮屏",
"亮屏持续时间":"亮屏持续时间",
"逗留警告":"逗留警告",
"异常警告":"异常警告"
"异常警告":"异常警告",
"关锁":"关锁",
"功能":"功能",
"配件":"配件"
}

View File

@ -141,7 +141,56 @@ class _LockDetailPageState extends State<LockDetailPage>
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<LockDetailPage>
child: PageView(
scrollDirection: Axis.horizontal,
controller: state.pageController,
// child: Row(
children: [
Obx(() => bottomWidget()),
attachmentWidget(),
],
// ),
),
)),
],
@ -227,6 +274,212 @@ class _LockDetailPageState extends State<LockDetailPage>
);
}
//
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<Widget> 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<Widget> 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<LockDetailPage>
);
}
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<LockDetailPage>
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<LockDetailPage>
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<LockDetailPage>
//
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<LockDetailPage>
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<LockDetailPage>
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<LockDetailPage>
@override
void dispose() {
// TODO: implement dispose
///
Get.log("LockDetailPage===dispose");
AppRouteObserver().routeObserver.unsubscribe(this);
@ -1036,7 +1264,6 @@ class _LockDetailPageState extends State<LockDetailPage>
state.replySubscription.cancel();
state.lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent!
.cancel();
if (state.animationController != null) {
state.animationController!.dispose();
state.animationController = null;

View File

@ -36,7 +36,8 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
final state = Get.find<LockMainLogic>().state;
Future<void> 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<StarLockMainPage> 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) {

View File

@ -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();

View File

@ -41,14 +41,25 @@ class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
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<StarLockMainXHJPage>
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<StarLockMainXHJPage>
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);
}),
],
),
),

View File

@ -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;
}

View File

@ -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'