diff --git a/lib/common/color/appConstants.dart b/lib/common/color/appConstants.dart index 996e46e..7ab9256 100644 --- a/lib/common/color/appConstants.dart +++ b/lib/common/color/appConstants.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; +import 'package:vbvs_app/enum/APPPackageType.dart'; class AppConstants { // App-related constants @@ -46,5 +47,6 @@ class AppConstants { ]; //系统参数 - int ent_type = 1;//1.默认太和 2.欢睡 + //运行打包APP模式 + int ent_type = APPPackageType.TH.code;//1.默认太和 2.欢睡 3.眠花糖 } diff --git a/lib/common/util/DailyLogUtils.dart b/lib/common/util/DailyLogUtils.dart index ecb0276..f1560d9 100644 --- a/lib/common/util/DailyLogUtils.dart +++ b/lib/common/util/DailyLogUtils.dart @@ -26,31 +26,35 @@ class DailyLogUtils { // 写入 info 日志(原 writeLog 保留) static Future writeLog(String content) async { + print("[dailylog-->info] $content]"); await _writeLogWithLevel('INFO', content); } // 写入 warning 日志 static Future writeWarning(String content) async { + print("[dailylog-->waring] $content]"); await _writeLogWithLevel('WARNING', content); } // 写入 error 日志 static Future writeError(String content) async { + print("[dailylog-->error] $content]"); await _writeLogWithLevel('ERROR', content); } // 写入 debug 日志 static Future writeDebug(String content) async { + print("[dailylog-->debug] $content]"); await _writeLogWithLevel('DEBUG', content); } static Future printLog(String content) async { - print("logger--->"+content); + print("logger--->" + content); // await writeLog(content); } // 读取当天日志 - static Future readTodayLog() async { + static Future readTodayLog() async { final file = await _getLogFile(); return await file.readAsString(); } diff --git a/lib/enum/APPPackageType.dart b/lib/enum/APPPackageType.dart new file mode 100644 index 0000000..cc32653 --- /dev/null +++ b/lib/enum/APPPackageType.dart @@ -0,0 +1,11 @@ +enum APPPackageType { + TH(1, '太和'), + HUANSHUI(2, '欢睡'), + MHT(3, '眠花糖'), + ; + + final int code; + final String description; + + const APPPackageType(this.code, this.description); +} diff --git a/lib/main.dart b/lib/main.dart index 2e538fd..2b6fd41 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,7 +12,6 @@ import 'package:fluwx/fluwx.dart'; import 'package:get_storage/get_storage.dart'; import 'package:localstorage/localstorage.dart'; import 'package:syncfusion_localizations/syncfusion_localizations.dart'; -import 'package:vbvs_app/common/color/AppGlobal.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/util/CheckNetwork.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart'; diff --git a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart index 9c97dc6..ea93d92 100644 --- a/lib/pages/main_bottom/component/main_page_b_bottom_change.dart +++ b/lib/pages/main_bottom/component/main_page_b_bottom_change.dart @@ -1,15 +1,18 @@ +import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart'; import 'package:vbvs_app/pages/mh_page/MattressControl.dart'; import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page.dart'; import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart'; import 'package:vbvs_app/pages/mh_page/new_mine_page.dart'; +import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart'; class MainPageBBottomChange extends StatefulWidget { // 全局 key,用于静态访问 _HomePageState - static final GlobalKey<_HomePageState> globalKey = GlobalKey<_HomePageState>(); + static final GlobalKey<_HomePageState> globalKey = + GlobalKey<_HomePageState>(); - MainPageBBottomChange({Key? key}) : super(key: globalKey); + MainPageBBottomChange({Key? key}) : super(key: globalKey); // 静态方法:外部调用,跳转 tab static void jumpTo(int index) { @@ -23,7 +26,6 @@ class MainPageBBottomChange extends StatefulWidget { _HomePageState createState() => _HomePageState(); } - class _HomePageState extends State with SingleTickerProviderStateMixin { int selectedIndex = 0; @@ -68,6 +70,7 @@ class _HomePageState extends State void _onTabTapped(int index) { setState(() { + dealWebSource(index); final begin = currentPosition; final end = index.toDouble(); _positionAnimation = Tween(begin: begin, end: end).animate( @@ -110,21 +113,31 @@ class _HomePageState extends State } void switchTab(int index) { - final begin = currentPosition; - final end = index.toDouble(); + final begin = currentPosition; + final end = index.toDouble(); - _positionAnimation = Tween(begin: begin, end: end).animate( - CurvedAnimation(parent: _controller, curve: Curves.easeOut), - )..addListener(() { - setState(() {}); + _positionAnimation = Tween(begin: begin, end: end).animate( + CurvedAnimation(parent: _controller, curve: Curves.easeOut), + )..addListener(() { + setState(() {}); + }); + + _controller.forward(from: 0.0); + currentPosition = end; + + setState(() { + selectedIndex = index; }); - - _controller.forward(from: 0.0); - currentPosition = end; - - setState(() { - selectedIndex = index; - }); -} - + } + + Future dealWebSource(int index) async { + WebviewTestController webviewTestController = Get.find(); + if (index == 2) { + await webviewTestController.web.jsbridge?.dart + .pageActive(); + }else{ + await webviewTestController.web.jsbridge?.dart + .pageInActive(); + } + } } diff --git a/lib/pages/mh_page/bluetooth.dart b/lib/pages/mh_page/bluetooth.dart index 54ff9f2..14a223e 100644 --- a/lib/pages/mh_page/bluetooth.dart +++ b/lib/pages/mh_page/bluetooth.dart @@ -9,6 +9,7 @@ import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart'; import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/pages/device_bind/componnet/bind_dialog.dart'; +import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart'; class BluetoothPage extends GetView { Map data; @@ -177,6 +178,16 @@ class BluetoothPage extends GetView { .unbindDevice(data); await deviceListController .getDeviceList(); + try { + WebviewTestController + webviewTestController = + Get.find(); + webviewTestController + .web.jsbridge?.dart + .unBindDevice(); + } catch (e) { + ef.log("[h5]通知列表更新报错:$e"); + } Get.toNamed("/mianPageBottomChange"); // 执行解绑逻辑 }, diff --git a/lib/pages/mh_page/device/component/DeviceComponentWidget.dart b/lib/pages/mh_page/device/component/DeviceComponentWidget.dart index 2e46de8..26a4cc2 100644 --- a/lib/pages/mh_page/device/component/DeviceComponentWidget.dart +++ b/lib/pages/mh_page/device/component/DeviceComponentWidget.dart @@ -20,6 +20,8 @@ import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/pages/mh_page/component/mht_bind_dialog.dart'; import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart'; import 'package:vbvs_app/pages/mh_page/device/model/BlueToothDataModel.dart'; +import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; +import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart'; class DeviceComponentWidget extends StatefulWidget { BlueToothDataModel bleDevice; @@ -36,6 +38,7 @@ class DeviceComponentWidget extends StatefulWidget { class _DeviceComponentWidgetState extends State { ThemeController themeController = Get.find(); MHTBlueToothController blueteethBindController = Get.find(); + MHTHomeController homeController = Get.find(); var lisObj; @override @@ -172,7 +175,7 @@ class _DeviceComponentWidgetState extends State { borderRadius: 16.rpx, onTap: () async { try { - // 连接前暂停扫描 + //连接前暂停扫描 blueteethBindController.pauseScanning(); if (blueteethBindController.currentDeviceMac?.value != null && @@ -225,6 +228,40 @@ class _DeviceComponentWidgetState extends State { TopSlideNotification.show(context, text: response.msg!); if (response.code == HttpStatusCodes.ok) { + try { + WebviewTestController webviewTestController = + Get.find(); + webviewTestController.web.jsbridge?.dart + .unBindDevice(); + } catch (e) { + ef.log("[h5]通知列表更新报错:$e"); + } + homeController.getPersonList(); + //请求绑定设备列表 + // homeController.getSleepReport(); + homeController.getDeviceNum().then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) { + TopSlideNotification.show( + Get.context!, + text: apiResponse.msg!, + textColor: themeController.currentColor.sc9, + ); + } + }); + homeController + .getDeviceList(group: 'room') + .then((apiResponse) { + if (apiResponse.code != HttpStatusCodes.ok) { + TopSlideNotification.show( + Get.context!, + text: apiResponse.msg!, + textColor: themeController.currentColor.sc9, + ); + } else { + //请求睡眠报告 + // deviceController.getSleepReport(); + } + }); //更新设备绑定流程 Get.toNamed("/mHTwifiPage", arguments: widget.bleDevice); @@ -242,6 +279,7 @@ class _DeviceComponentWidgetState extends State { textColor: themeController.currentColor.sc9, ); } + blueteethBindController.resumeScanning(); }, onCancel: () { print('用户点击了取消'); @@ -262,10 +300,11 @@ class _DeviceComponentWidgetState extends State { DailyLogUtils.writeLog("连接异常: $e"); } finally { // 确保在任何情况下都恢复扫描 - if (blueteethBindController - .currentDeviceMac.value.isEmpty) { - blueteethBindController.resumeScanning(); - } + // if (blueteethBindController + // .currentDeviceMac.value.isEmpty) { + // blueteethBindController.resumeScanning(); + // } + blueteethBindController.resumeScanning(); } }, colors: [stringToColor("1592AA"), stringToColor("006FA3")], @@ -452,7 +491,7 @@ class _DeviceComponentWidgetState extends State { try { // 连接设备 THapp bledevice = THapp(device: device.scanResult.device); - await bledevice.connect(); + await bledevice.connect(); var res2 = bledevice.isConnected; if (!res2) { @@ -468,7 +507,7 @@ class _DeviceComponentWidgetState extends State { blueteethBindController.blueConnectFlag.value = 2; blueteethBindController.currentDevice = bledevice; - + await Future.delayed(Duration(seconds: 1)); var read = bledevice.getresource('fff0/fff1'); await read!.characteristic.setNotifyValue(true); var write = bledevice.getresource('fff0/fff2'); diff --git a/lib/pages/mh_page/device/mht_blueteeth_device_page.dart b/lib/pages/mh_page/device/mht_blueteeth_device_page.dart index baa0b1a..28a3461 100644 --- a/lib/pages/mh_page/device/mht_blueteeth_device_page.dart +++ b/lib/pages/mh_page/device/mht_blueteeth_device_page.dart @@ -601,6 +601,11 @@ class _MHTBlueteethDevicePageState extends State { Obx(() { if (mhtBlueToothController .model.deviceDataStatus!.isNotEmpty) { + final sortedList = mhtBlueToothController + .model.deviceDataStatus! + .toList() + ..sort((a, b) => b.scanResult.rssi + .compareTo(a.scanResult.rssi)); return Expanded( child: Container( width: double.infinity, @@ -608,8 +613,7 @@ class _MHTBlueteethDevicePageState extends State { child: Column( mainAxisSize: MainAxisSize.max, children: [ - ...mhtBlueToothController - .model.deviceDataStatus! + ...sortedList .map((device) { return DeviceComponentWidget( bleDevice: device, diff --git a/lib/pages/mh_page/device/mht_wifi_page.dart b/lib/pages/mh_page/device/mht_wifi_page.dart index 315d1ba..c2d033e 100644 --- a/lib/pages/mh_page/device/mht_wifi_page.dart +++ b/lib/pages/mh_page/device/mht_wifi_page.dart @@ -8,6 +8,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; +import 'package:vbvs_app/common/util/DailyLogUtils.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart'; @@ -66,10 +67,12 @@ class _MHTWifiPageState extends State { blueteethBindController.updateAll(); } + @override @override void dispose() { _isDisposed = true; _cleanupResources(); + _disconnectDevice(); super.dispose(); } @@ -1097,4 +1100,14 @@ class _MHTWifiPageState extends State { onFailure: (res) {}, ); } + + void _disconnectDevice() async { + try { + THapp bledevice = THapp(device: widget.deviceInfo.scanResult.device); + await bledevice.disconnect(); + DailyLogUtils.writeLog("关闭蓝牙连接成功"); + } catch (e) { + DailyLogUtils.writeError("关闭蓝牙连接失败: $e"); + } + } } diff --git a/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart b/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart index 79c52cd..172781f 100644 --- a/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart +++ b/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart @@ -2,6 +2,7 @@ import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; +import 'package:vbvs_app/common/util/DailyLogUtils.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; @@ -80,18 +81,17 @@ class _HomeDeviceStausWidgetState extends State { WebviewTestController webviewTestController = Get.find(); var future = webviewTestController.web.jsbridge?.dart .appToHtmlDevice(device); - - Future.delayed(Duration(seconds: 5), () { + Future.delayed(Duration(seconds: 5), () { return; }); - - await future; + await future; + await webviewTestController.web.jsbridge?.dart + .pageActive(); MainPageBBottomChange.jumpTo(2); } catch (e) { - print("发生异常: $e"); + DailyLogUtils.writeError("发生异常: $e"); } }, - colors: AppConstants().mhtButtongradientColors, // 你原本没有渐变,单色即可 enableGradient: true, // 关闭渐变 diff --git a/lib/pages/sleep_report/new_sleep_report_page.dart b/lib/pages/sleep_report/new_sleep_report_page.dart index 41a3d3d..54f7ec3 100644 --- a/lib/pages/sleep_report/new_sleep_report_page.dart +++ b/lib/pages/sleep_report/new_sleep_report_page.dart @@ -188,7 +188,7 @@ class _NewSleepReportPageState extends State { if (widget.data['arrow'] == null || widget.data['arrow'] == true) Positioned( - left: 20, + left: 0, child: returnIconButtomNew, ), ],