diff --git a/star_lock/flavorizr.yaml b/star_lock/flavorizr.yaml index e411ad41..fc7e6810 100644 --- a/star_lock/flavorizr.yaml +++ b/star_lock/flavorizr.yaml @@ -95,7 +95,7 @@ flavors: bundleId: "com.skychip.lock" xhj: app: - name: "鑫锁" + name: "星星锁" icon: "assets/icon/xhj.png" android: applicationId: "com.xhjcn.lock" diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index 2f22946c..780716ea 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -57,8 +57,12 @@ PODS: - fluttertoast (0.0.2): - Flutter - Toast - - g711_flutter (0.0.1): + - fluwx (0.0.1): - Flutter + - fluwx/pay (= 0.0.1) + - fluwx/pay (0.0.1): + - Flutter + - WechatOpenSDK-XCFramework (~> 2.0.4) - google_maps_flutter_ios (0.0.1): - Flutter - GoogleMaps (< 9.0) @@ -88,7 +92,7 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - permission_handler_apple (9.1.1): + - permission_handler_apple (9.3.0): - Flutter - ReachabilitySwift (5.0.0) - shared_preferences_foundation (0.0.1): @@ -107,6 +111,7 @@ PODS: - FlutterMacOS - webview_flutter_wkwebview (0.0.1): - Flutter + - WechatOpenSDK-XCFramework (2.0.4) DEPENDENCIES: - aj_captcha_flutter (from `.symlinks/plugins/aj_captcha_flutter/ios`) @@ -128,7 +133,7 @@ DEPENDENCIES: - flutter_pcm_sound (from `.symlinks/plugins/flutter_pcm_sound/ios`) - flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`) - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - - g711_flutter (from `.symlinks/plugins/g711_flutter/ios`) + - fluwx (from `.symlinks/plugins/fluwx/ios`) - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) @@ -164,6 +169,7 @@ SPEC REPOS: - JPush - ReachabilitySwift - Toast + - WechatOpenSDK-XCFramework EXTERNAL SOURCES: aj_captcha_flutter: @@ -202,8 +208,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_voice_processor/ios" fluttertoast: :path: ".symlinks/plugins/fluttertoast/ios" - g711_flutter: - :path: ".symlinks/plugins/g711_flutter/ios" + fluwx: + :path: ".symlinks/plugins/fluwx/ios" google_maps_flutter_ios: :path: ".symlinks/plugins/google_maps_flutter_ios/ios" image_gallery_saver: @@ -249,7 +255,7 @@ SPEC CHECKSUMS: AMapLocation: 5248aec2455ebb5d104b367813c946430a2ee033 app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc audio_service: f509d65da41b9521a61f1c404dd58651f265a567 - audio_session: 4f3e461722055d21515cf3261b64c973c062f345 + audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d camera_avfoundation: 8b8d780bcfb6a4a02b0fbe2b4bd17b5b71946e68 @@ -263,7 +269,7 @@ SPEC CHECKSUMS: flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82 fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 - g711_flutter: 8f2769052d2cf3549f83d11e1c42d81d94441123 + fluwx: daa284756ce53442b3d0417ceeda66e981906811 google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458 GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb @@ -276,7 +282,7 @@ SPEC CHECKSUMS: network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c - permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec @@ -285,6 +291,7 @@ SPEC CHECKSUMS: url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4 + WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index c877b545..1d86c55a 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -1,5 +1,6 @@ import 'package:get/get.dart'; import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart'; +import 'package:star_lock/flavors.dart'; import 'package:star_lock/login/register/starLock_register_binding.dart'; import 'package:star_lock/main/accessoriesList/accessoriesList_page.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart'; @@ -29,6 +30,7 @@ import 'package:star_lock/main/lockDetail/palm/addPalm/addPalm_page.dart'; import 'package:star_lock/main/lockDetail/palm/addPalmType/addPalmTypeManage/addPalmTypeManage_page.dart'; import 'package:star_lock/main/lockDetail/palm/palmList/palmList_page.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetailChangeDate/passwordKeyDetailChangeDate_page.dart'; +import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart'; import 'package:star_lock/mine/about/webviewShow_page.dart'; import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart'; @@ -453,7 +455,9 @@ abstract class AppRouters { ), GetPage( name: Routers.starLockMain, - page: () => const StarLockMainPage(), + page: () => F.sw( + defaultCall: () => StarLockMainPage(), + xhjCall: () => const StarLockMainXHJPage()), ), GetPage( name: Routers.starLockMinePage, @@ -465,7 +469,7 @@ abstract class AppRouters { ), GetPage( name: Routers.lockMallPage, - page: () => const LockMallPage(), + page: () => LockMallPage(), ), GetPage( name: Routers.addLockPage, @@ -729,7 +733,7 @@ abstract class AppRouters { ), GetPage( name: Routers.minePersonInfoPage, - page: () => const MinePersonInfoPage(), + page: () => MinePersonInfoPage(), ), GetPage( name: Routers.minePersonInfoEditNamePage, @@ -761,7 +765,7 @@ abstract class AppRouters { ), GetPage( name: Routers.messageListPage, - page: () => const MessageListPage(), + page: () => MessageListPage(), ), GetPage( name: Routers.supportStaffPage, diff --git a/star_lock/lib/app_settings/app_colors.dart b/star_lock/lib/app_settings/app_colors.dart index caec2e39..63c142b3 100644 --- a/star_lock/lib/app_settings/app_colors.dart +++ b/star_lock/lib/app_settings/app_colors.dart @@ -1,10 +1,15 @@ import 'dart:ui'; import 'package:flutter/material.dart'; +import 'package:fluwx/fluwx.dart'; +import 'package:star_lock/flavors.dart'; class AppColors { // static Color mainColor = const Color(0xFF385DEA); - static Color mainColor = const Color(0xFF4777EE); + static Color get mainColor => F.sw( + defaultCall: () => const Color(0xFF4777EE), + xhjCall: () => const Color(0xFF68c1b9)); + static Color mainBackgroundColor = const Color(0xFFF5F5F5); static Color primaryTopColor = const Color(0xFF021B38); @@ -25,6 +30,7 @@ class AppColors { //check box color static Color checkBoxSelectedColor = touristColor; + static Color get checkBoxUnselectedColor => const Color(0xFFFFFFFF); static Color checkBoxOverlayColor = checkBoxUnselectedColor.withOpacity(0.3); @@ -69,6 +75,7 @@ class AppColors { static Color wifiDisableColor = const Color(0xFFA8A8A8); static Color get paginationColor => const Color(0xFF01295C).withOpacity(45); + static Color get paginationActiveColor => const Color(0xFFFFFFFF).withOpacity(65); @@ -128,8 +135,9 @@ class AppColors { static const msgNoticeTextColor = Color.fromRGBO(139, 148, 176, 1); //消息提醒字体颜色 static const alphaBgViewColor = Color.fromRGBO(0, 0, 0, 0.2); //透明度背景 - static Color openPassageModeColor = const Color(0xFFEB2A3B);// 首页开启常开模式颜色(红色) - static Color listTimeYellowColor = const Color(0xFFF3BA37);// 首页时间过期颜色(黄色) + static Color openPassageModeColor = const Color(0xFFEB2A3B); // 首页开启常开模式颜色(红色) + static Color listTimeYellowColor = const Color(0xFFF3BA37); // 首页时间过期颜色(黄色) - static Color get lockDetailBottomBtnUneable => const Color(0xFF808080);// 首页时间灰色颜色(灰色) + static Color get lockDetailBottomBtnUneable => + const Color(0xFF808080); // 首页时间灰色颜色(灰色) } diff --git a/star_lock/lib/flavors.dart b/star_lock/lib/flavors.dart index 84e28c0b..ac37d365 100644 --- a/star_lock/lib/flavors.dart +++ b/star_lock/lib/flavors.dart @@ -18,6 +18,8 @@ class StarLockAMapKey { const StarLockAMapKey({required this.iosKey, required this.androidKey}); } +typedef dynamic fCallFunction(); + class F { static Flavor? appFlavor; @@ -26,6 +28,24 @@ class F { static String get name => appFlavor?.name ?? ''; + //便捷判断并返回值 + static dynamic sw( + {required fCallFunction defaultCall, fCallFunction? xhjCall}) { + if (xhjCall == null) { + return defaultCall(); + } + switch (appFlavor) { + case Flavor.xhj: + return xhjCall(); + case Flavor.local: + case Flavor.dev: + case Flavor.pre: + case Flavor.sky: + default: + return defaultCall(); + } + } + static bool get debug { switch (appFlavor) { case Flavor.local: @@ -54,7 +74,7 @@ class F { case Flavor.sky: return '锁通通'; case Flavor.xhj: - return '鑫锁'; + return '星星锁'; default: throw Exception('flavor[$name] title not found'); } @@ -71,7 +91,7 @@ class F { case Flavor.sky: return '锁通通'; case Flavor.xhj: - return '鑫锁'; + return '星星锁'; default: throw Exception('flavor[$name] title not found'); } @@ -89,7 +109,8 @@ class F { case Flavor.sky: return 'https://lock.skychip.top'; case Flavor.xhj: - return 'https://lock.xhjcn.ltd'; + // return 'https://lock.xhjcn.ltd'; + return 'https://pre.lock.star-lock.cn'; default: throw Exception('flavor[$name] apiPrefix not found'); } diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart index cf12e539..805efc39 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_page.dart @@ -22,20 +22,20 @@ import '../lockList/lockList_page.dart'; import 'lockMain_logic.dart'; class StarLockMainPage extends StatefulWidget { - const StarLockMainPage({Key? key}) : super(key: key); + StarLockMainPage({Key? key, this.showAppBar = true, this.showDrawer = true}) + : super(key: key); + bool showAppBar; + bool showDrawer; @override State createState() => _StarLockMainPageState(); } -// GlobalKey<_StarLockMainPageState> starLockMainKey = GlobalKey(); class _StarLockMainPageState extends State with BaseWidget { final logic = Get.put(LockMainLogic()); final state = Get.find().state; Future getHttpData() async { - // await logic.getStarLockInfo(); - // setState(() {}); logic.getStarLockInfo().then((LockListInfoEntity value) { if (mounted) { setState(() {}); @@ -46,7 +46,7 @@ class _StarLockMainPageState extends State with BaseWidget { @override void initState() { super.initState(); - WidgetsBinding.instance!.addPostFrameCallback((_) { + WidgetsBinding.instance.addPostFrameCallback((_) { logic.pageNo = 1; getHttpData(); }); @@ -57,60 +57,38 @@ class _StarLockMainPageState extends State with BaseWidget { @override void didChangeDependencies() { super.didChangeDependencies(); - // WidgetsBinding.instance!.addPostFrameCallback((_) { - // getHttpData(); - // }); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF5F5F5), - appBar: 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: () { - // _globalKey.currentState!.openDrawer(); - Scaffold.of(context).openDrawer(); - }, - )), - backgroundColor: AppColors.mainColor, - // actionsList: [ - // TextButton( - // child: const Text("", style: TextStyle(color: Colors.white)), - // onPressed: () { - // Navigator.pushNamed(context, Routers.starLockLoginPage); - // }, - // ), - // ], - ), - drawer: Drawer( - width: 1.sw / 3 * 2, - child: const StarLockMinePage(), - ), - // body: FutureBuilder( - // future: logic.getStarLockInfo(), // 异步操作 - // builder: (BuildContext context, AsyncSnapshot snapshot) { - // if (snapshot.connectionState == ConnectionState.waiting) { - // // return CircularProgressIndicator(); // 显示加载指示器 - // return Container(); - // } else if (snapshot.hasError) { - // // return Text('Error: ${snapshot.error}'); // 显示错误 - // return unHaveData(); - // } else { - // return getDataReturnUI(snapshot.data!.groupList!.length ?? 0); // 显示获取的数据 - // } - // }, - // ), + 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((_) { @@ -120,13 +98,6 @@ class _StarLockMainPageState extends State with BaseWidget { }); }, child: getDataReturnUI(state.dataLength.value)), - // body:smartRefresher( - // logic.refreshController, - // onRefresh:logic.onRefresh, - // onLoading:logic.onLoading, - // child:Obx(() => getDataReturnUI(state.dataLength.value))), - // body: getLockList(), - // body: unHaveData(), ); } @@ -140,11 +111,12 @@ class _StarLockMainPageState extends State with BaseWidget { case 1: // 只有一条数据 Storage.setBool(ifIsDemoModeOrNot, false); - print("state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}"); + print( + "state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}"); returnWidget = LockDetailPage( isOnlyOneData: true, - lockListInfoItemEntity: state - .lockListInfoGroupEntity.value.groupList![0].lockList![0]); + lockListInfoItemEntity: + state.lockListInfoGroupEntity.value.groupList![0].lockList![0]); break; case 2: // 有多条数据 @@ -156,8 +128,6 @@ class _StarLockMainPageState extends State with BaseWidget { returnWidget = NoData(); break; } - // Future.delayed(const Duration(seconds: 1)); - // Future.delayed(const Duration(milliseconds: 200)); return returnWidget; } @@ -175,12 +145,6 @@ class _StarLockMainPageState extends State with BaseWidget { children: [ SizedBox( width: 330.w, - // height: 330.w, - // margin: EdgeInsets.only(top: 180.h), - // decoration: BoxDecoration( - // border: Border.all(width: 4.w, color: AppColors.mainColor), - // borderRadius: BorderRadius.circular(110.w), - // ), child: InkWell( child: Padding( padding: const EdgeInsets.all(30.0), @@ -193,11 +157,8 @@ class _StarLockMainPageState extends State with BaseWidget { onTap: () { //实现回调函数 Navigator.pushNamed( - context, Routers.selectLockTypePage, - // arguments: { - // "url": ConstConfig.privacAgreementUrl, - // "title": '隐私政策' - // } + context, + Routers.selectLockTypePage, ); }, )), @@ -235,10 +196,10 @@ class _StarLockMainPageState extends State with BaseWidget { void onHide() {} late StreamSubscription _teamEvent; + void _initLoadDataAction() { print("监听刷新首页数据消息"); _teamEvent = eventBus.on().listen((event) { - // getLockInfo(); logic.pageNo = 1; getHttpData(); print("收到刷新首页数据消息"); 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 new file mode 100644 index 00000000..31602b82 --- /dev/null +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart @@ -0,0 +1,29 @@ +import 'dart:async'; +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; + +class LockMainXHJLogic extends BaseGetXController { + final LockMainXHJState state = LockMainXHJState(); + + void setIndex(int index) { + state.index = index; + update(); + } + + @override + void onReady() { + super.onReady(); + } + + @override + void onInit() { + super.onInit(); + } + + @override + void onClose() { + super.onClose(); + } +} 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 new file mode 100644 index 00000000..5ed23c91 --- /dev/null +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart @@ -0,0 +1,164 @@ +import 'dart:async'; +import 'dart:ui'; +import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/baseWidget.dart'; +import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart'; +import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart'; +import 'package:star_lock/mine/mall/lockMall_page.dart'; +import 'package:star_lock/mine/message/messageList/messageList_page.dart'; +import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart'; +import 'package:star_lock/tools/noData.dart'; +import 'package:star_lock/tools/submitBtn.dart'; + +class StarLockMainXHJPage extends StatefulWidget { + const StarLockMainXHJPage({Key? key}) : super(key: key); + + @override + State createState() => _StarLockMainXHJPageState(); +} + +class _StarLockMainXHJPageState extends State + with BaseWidget { + @override + void initState() { + super.initState(); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + } + + @override + Widget build(BuildContext context) { + return GetBuilder( + init: LockMainXHJLogic(), + builder: (LockMainXHJLogic logic) { + return Scaffold( + backgroundColor: const Color(0xFFF5F5F5), + body: SafeArea( + bottom: false, + child: Stack( + children: [ + pageView( + widget: StarLockMainPage( + showAppBar: false, + showDrawer: false, + ), + logic: logic, + index: 0, + ), + pageView( + widget: MessageListPage( + showAppBar: false, + ), + logic: logic, + index: 1), + pageView( + widget: LockMallPage( + showAppBar: false, + ), + logic: logic, + index: 2), + pageView( + widget: MinePersonInfoPage( + showAppBar: false, + ), + logic: logic, + index: 3), + ], + ), + ), + bottomNavigationBar: Container( + height: 100.h + Get.bottomBarHeight, + decoration: const BoxDecoration( + color: Colors.transparent, + border: Border( + top: BorderSide( + color: Colors.black, // 设置边框颜色 + width: 0.3, // 设置边框宽度 + ), + ), + ), + child: Row( + children: [ + // navigationBarItem(Icons.start, '场景', false, () { + // logic.setIndex(0); + // }), + navigationBarItem(Icons.devices, '设备', logic, 0, () { + logic.setIndex(0); + }), + navigationBarItem(Icons.message, '消息', logic, 1, () { + logic.setIndex(1); + }), + navigationBarItem(Icons.shopping_cart, '商城', logic, 2, () { + logic.setIndex(2); + }), + navigationBarItem(Icons.account_circle, '我的', logic, 3, () { + logic.setIndex(3); + }), + ], + ), + ), + ); + }); + } + + //布局 + Widget pageView( + {required Widget widget, + required LockMainXHJLogic logic, + required int index}) { + return Positioned.fill( + child: Offstage( + offstage: logic.state.index != index, + child: widget, + ), + ); + } + + //底部按钮 + Widget navigationBarItem(IconData icon, String text, LockMainXHJLogic logic, + int index, var onTop) { + bool check = logic.state.index == index; + return Expanded( + child: GestureDetector( + onTap: onTop, + child: Container( + color: Colors.transparent, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.only(bottom: 8.h), + child: Icon( + icon, + size: 32.r, + color: + check ? AppColors.mainColor : AppColors.darkGrayTextColor, + ), + ), + Text( + text, + style: TextStyle( + fontSize: 16.sp, + color: + check ? AppColors.mainColor : AppColors.darkGrayTextColor, + ), + ), + ], + ), + ), + ), + ); + } + + @override + void dispose() { + super.dispose(); + } +} diff --git a/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart new file mode 100644 index 00000000..01f310fb --- /dev/null +++ b/star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart @@ -0,0 +1,9 @@ + +import 'dart:async'; + +import 'package:get/get.dart'; + +class LockMainXHJState { + int index = 0; + +} \ No newline at end of file diff --git a/star_lock/lib/mine/mall/lockMall_page.dart b/star_lock/lib/mine/mall/lockMall_page.dart index 8c713af0..f93202f6 100644 --- a/star_lock/lib/mine/mall/lockMall_page.dart +++ b/star_lock/lib/mine/mall/lockMall_page.dart @@ -7,7 +7,8 @@ import 'package:star_lock/tools/titleAppBar.dart'; import 'package:webview_flutter/webview_flutter.dart'; class LockMallPage extends StatefulWidget { - const LockMallPage({Key? key}) : super(key: key); + LockMallPage({Key? key, this.showAppBar = true}) : super(key: key); + bool showAppBar; @override State createState() => _LockMallPageState(); @@ -33,11 +34,13 @@ class _LockMallPageState extends State { child: Scaffold( resizeToAvoidBottomInset: false, backgroundColor: const Color(0xFFFFFFFF), - appBar: TitleAppBar( - barTitle: getWebTitle(), - haveBack: true, - backgroundColor: AppColors.mainColor, - ), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: getWebTitle(), + haveBack: true, + backgroundColor: AppColors.mainColor, + ) + : null, body: Obx(() => Column( children: [ Container( @@ -45,7 +48,8 @@ class _LockMallPageState extends State { child: LinearProgressIndicator( value: state.webProgress.value, backgroundColor: Colors.grey, - valueColor: AlwaysStoppedAnimation(AppColors.mainColor), + valueColor: + AlwaysStoppedAnimation(AppColors.mainColor), ), ), Expanded( diff --git a/star_lock/lib/mine/message/messageList/messageList_page.dart b/star_lock/lib/mine/message/messageList/messageList_page.dart index cd34b08e..1ff5ef1b 100644 --- a/star_lock/lib/mine/message/messageList/messageList_page.dart +++ b/star_lock/lib/mine/message/messageList/messageList_page.dart @@ -14,18 +14,20 @@ import 'messageList_logic.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; class MessageListPage extends StatefulWidget { - const MessageListPage({Key? key}) : super(key: key); + MessageListPage({Key? key, this.showAppBar = true}) : super(key: key); + bool showAppBar; @override State createState() => _MessageListPageState(); } -class _MessageListPageState extends State with TickerProviderStateMixin { +class _MessageListPageState extends State + with TickerProviderStateMixin { final logic = Get.put(MessageListLogic()); final state = Get.find().state; - void getHttpData(){ - logic.messageListDataRequest().then((MessageListEntity value){ + void getHttpData() { + logic.messageListDataRequest().then((MessageListEntity value) { setState(() {}); }); } @@ -41,58 +43,61 @@ class _MessageListPageState extends State with TickerProviderSt Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, - appBar: TitleAppBar( - barTitle: TranslationLoader.lanKeys!.message!.tr, - haveBack: true, - backgroundColor: AppColors.mainColor), - body: EasyRefreshTool( - onRefresh: (){ - logic.pageNo = 1; - getHttpData(); - }, - onLoad: (){ - getHttpData(); - }, - child: Obx(() { - return state.itemDataList.value.isEmpty - ? NoData() - : SlidableAutoCloseBehavior( - child: ListView.builder( - itemCount: state.itemDataList.value.length, - itemBuilder: (c, index) { - MessageItemEntity messageItemEntity = state.itemDataList.value[index]; - return Slidable( - key:ValueKey(messageItemEntity.id), - endActionPane: ActionPane( - extentRatio: 0.2, - motion: const ScrollMotion(), - children: [ - SlidableAction( - onPressed: (BuildContext context){ - logic.deletMessageDataRequest(messageItemEntity.id!, (){ - logic.pageNo = 1; - getHttpData(); - }); - }, - backgroundColor: Colors.red, - foregroundColor: Colors.white, - label: '删除', - padding: EdgeInsets.only(left: 5.w, right: 5.w), - ), - ], - ), - child: _messageListItem(messageItemEntity, () { - Get.toNamed(Routers.messageDetailPage, arguments: {"messageItemEntity": messageItemEntity}); - }), - ); - }), - ); - }) - ), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: TranslationLoader.lanKeys!.message!.tr, + haveBack: true, + backgroundColor: AppColors.mainColor) + : null, + body: EasyRefreshTool(onRefresh: () { + logic.pageNo = 1; + getHttpData(); + }, onLoad: () { + getHttpData(); + }, child: Obx(() { + return state.itemDataList.value.isEmpty + ? NoData() + : SlidableAutoCloseBehavior( + child: ListView.builder( + itemCount: state.itemDataList.value.length, + itemBuilder: (c, index) { + MessageItemEntity messageItemEntity = + state.itemDataList.value[index]; + return Slidable( + key: ValueKey(messageItemEntity.id), + endActionPane: ActionPane( + extentRatio: 0.2, + motion: const ScrollMotion(), + children: [ + SlidableAction( + onPressed: (BuildContext context) { + logic.deletMessageDataRequest( + messageItemEntity.id!, () { + logic.pageNo = 1; + getHttpData(); + }); + }, + backgroundColor: Colors.red, + foregroundColor: Colors.white, + label: '删除', + padding: EdgeInsets.only(left: 5.w, right: 5.w), + ), + ], + ), + child: _messageListItem(messageItemEntity, () { + Get.toNamed(Routers.messageDetailPage, arguments: { + "messageItemEntity": messageItemEntity + }); + }), + ); + }), + ); + })), ); } - Widget _messageListItem(MessageItemEntity messageItemEntity, Function() action) { + Widget _messageListItem( + MessageItemEntity messageItemEntity, Function() action) { return GestureDetector( onTap: action, child: Container( @@ -117,7 +122,10 @@ class _MessageListPageState extends State with TickerProviderSt maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( - fontSize: 22.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor), + fontSize: 22.sp, + color: messageItemEntity.readAt! == 0 + ? AppColors.blackColor + : AppColors.placeholderTextColor), ), ), ], @@ -128,7 +136,14 @@ class _MessageListPageState extends State with TickerProviderSt children: [ // Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,), // SizedBox(width: 10.w,), - Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)), + Text( + DateTool().dateToYMDHNString( + messageItemEntity.createdAt!.toString()), + style: TextStyle( + fontSize: 18.sp, + color: messageItemEntity.readAt! == 0 + ? AppColors.blackColor + : AppColors.placeholderTextColor)), ], ), SizedBox(width: 20.h), diff --git a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart index 6be361c2..7f368dea 100644 --- a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart +++ b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -14,7 +13,8 @@ import '../../../tools/titleAppBar.dart'; import '../../../translations/trans_lib.dart'; class MinePersonInfoPage extends StatefulWidget { - const MinePersonInfoPage({Key? key}) : super(key: key); + MinePersonInfoPage({Key? key, this.showAppBar = true}) : super(key: key); + bool showAppBar; @override State createState() => _MinePersonInfoPageState(); @@ -28,34 +28,43 @@ class _MinePersonInfoPageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.mainBackgroundColor, - appBar: TitleAppBar( - barTitle: TranslationLoader.lanKeys!.personalInformation!.tr, - haveBack: true, - backgroundColor: AppColors.mainColor), + appBar: widget.showAppBar + ? TitleAppBar( + barTitle: TranslationLoader.lanKeys!.personalInformation!.tr, + haveBack: true, + backgroundColor: AppColors.mainColor) + : null, body: Column( children: [ Obx(() => CommonItem( - leftTitel: TranslationLoader.lanKeys!.avatar!.tr, - rightTitle: "", - allHeight: 100.h, - isHaveLine: true, - isHaveDirection: true, - isHaveRightWidget: true, - rightWidget: ClipRRect( - borderRadius: BorderRadius.circular(36.w), - child: CustomNetworkImage(url:state.headUrl.value, defaultUrl: 'images/controls_user.png', width:72.w, height:72.w), - ), - action: () async { - _openModalBottomSheet(); - }, - )), + leftTitel: TranslationLoader.lanKeys!.avatar!.tr, + rightTitle: "", + allHeight: 100.h, + isHaveLine: true, + isHaveDirection: true, + isHaveRightWidget: true, + rightWidget: ClipRRect( + borderRadius: BorderRadius.circular(36.w), + child: CustomNetworkImage( + url: state.headUrl.value, + defaultUrl: 'images/controls_user.png', + width: 72.w, + height: 72.w), + ), + action: () async { + _openModalBottomSheet(); + }, + )), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.nickName!.tr, - rightTitle: state.mineInfoData.value.nickname != null ? state.mineInfoData.value.nickname! : "", + rightTitle: state.mineInfoData.value.nickname != null + ? state.mineInfoData.value.nickname! + : "", isHaveLine: true, isHaveDirection: true, action: () { - Navigator.pushNamed(context, Routers.minePersonInfoEditNamePage, + Navigator.pushNamed( + context, Routers.minePersonInfoEditNamePage, arguments: {'mineInfoData': state.mineInfoData.value}) .then((value) => logic.getUserInfoRequest()); })), @@ -69,13 +78,18 @@ class _MinePersonInfoPageState extends State { action: () { //有手机号 则去修改手机号 否则去绑定新的手机号 isFrom:1 短信,2 邮箱 if (state.mineInfoData.value.mobile!.isNotEmpty) { - Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage, - arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'}) - .then((value) => logic.getUserInfoRequest()); + Navigator.pushNamed( + context, Routers.mineUnbindPhoneOrEmailPage, + arguments: { + 'mobile': state.mineInfoData.value.mobile!, + 'isFrom': '1' + }).then((value) => logic.getUserInfoRequest()); } else { - Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage, - arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'}) - .then((value) => logic.getUserInfoRequest()); + Navigator.pushNamed( + context, Routers.mineBindPhoneOrEmailPage, arguments: { + 'mobile': state.mineInfoData.value.mobile!, + 'isFrom': '1' + }).then((value) => logic.getUserInfoRequest()); } })), Obx(() => CommonItem( @@ -88,13 +102,18 @@ class _MinePersonInfoPageState extends State { action: () { //有邮箱 则去修改邮箱 否则去绑定新的邮箱 isFrom:1 短信,2 邮箱 if (state.mineInfoData.value.email!.isNotEmpty) { - Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage, - arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!}) - .then((value) => logic.getUserInfoRequest()); + Navigator.pushNamed( + context, Routers.mineUnbindPhoneOrEmailPage, + arguments: { + 'isFrom': '2', + 'email': state.mineInfoData.value.email! + }).then((value) => logic.getUserInfoRequest()); } else { - Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage, - arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!}) - .then((value) => logic.getUserInfoRequest()); + Navigator.pushNamed( + context, Routers.mineBindPhoneOrEmailPage, arguments: { + 'isFrom': '2', + 'email': state.mineInfoData.value.email! + }).then((value) => logic.getUserInfoRequest()); } })), CommonItem( @@ -103,24 +122,30 @@ class _MinePersonInfoPageState extends State { isHaveLine: true, isHaveDirection: true, action: () { - Navigator.pushNamed(context, Routers.minePersonInfoResetPasswordPage); + Navigator.pushNamed( + context, Routers.minePersonInfoResetPasswordPage); }), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.safetyProblem!.tr, - rightTitle: state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "", + rightTitle: + state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "", isHaveLine: true, isHaveDirection: true, action: () { if (state.mineInfoData.value.haveSafeAnswer == 0) { - Navigator.pushNamed(context, Routers.minePersonInfoSetSafetyProblemPage) + Navigator.pushNamed( + context, Routers.minePersonInfoSetSafetyProblemPage) .then((value) => logic.getUserInfoRequest()); } else { - Navigator.pushNamed(context, Routers.minePersonInfoViewSafetyProblemPage); + Navigator.pushNamed( + context, Routers.minePersonInfoViewSafetyProblemPage); } })), Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr, - rightTitle: state.mineInfoData.value.countryName != null ? state.mineInfoData.value.countryName! : "", + rightTitle: state.mineInfoData.value.countryName != null + ? state.mineInfoData.value.countryName! + : "", isHaveLine: false, isHaveDirection: false)), ], @@ -152,7 +177,8 @@ class _MinePersonInfoPageState extends State { Future _openModalBottomSheet() async { showModalBottomSheet( context: context, - shape: RoundedRectangleBorder(borderRadius: BorderRadiusDirectional.circular(10)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadiusDirectional.circular(10)), builder: (BuildContext context) { return AlertBottomWidget( topTitle: '', diff --git a/star_lock/lib/nav/navPages.dart b/star_lock/lib/nav/navPages.dart index 2391fc87..b4f1ddbd 100644 --- a/star_lock/lib/nav/navPages.dart +++ b/star_lock/lib/nav/navPages.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:star_lock/mine/mine/starLockMine_page.dart'; @@ -16,7 +15,7 @@ class NavPages extends StatefulWidget { class _NavPagesState extends State { int _currentIndex = 0; final List _listPage = [ - const StarLockMainPage(), + StarLockMainPage(), // StarLockMinePage(key: starLockMineKey), ]; diff --git a/star_lock/lib/starLockApplication/starLockApplication.dart b/star_lock/lib/starLockApplication/starLockApplication.dart index e0789be5..1d32a39f 100644 --- a/star_lock/lib/starLockApplication/starLockApplication.dart +++ b/star_lock/lib/starLockApplication/starLockApplication.dart @@ -2,6 +2,7 @@ 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/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart'; import 'package:star_lock/tools/appFirstEnterHandle.dart'; import 'package:star_lock/debug/debug_tool.dart'; import 'package:star_lock/tools/storage.dart'; @@ -42,7 +43,9 @@ class _StarLockApplicationState extends State { } else if (snapshot.hasData) { if (snapshot.data!) { // 如果用户已登录,返回主页面 - return const StarLockMainPage(); + return F.sw( + defaultCall: () => StarLockMainPage(), + xhjCall: () => const StarLockMainXHJPage()); } else { // 如果用户未登录,返回登录页面 return const StarLockLoginPage();