diff --git a/lib/pages/mh_page/device/component/DeviceComponentWidget.dart b/lib/pages/mh_page/device/component/DeviceComponentWidget.dart index dd2cde8..1e8a02f 100644 --- a/lib/pages/mh_page/device/component/DeviceComponentWidget.dart +++ b/lib/pages/mh_page/device/component/DeviceComponentWidget.dart @@ -55,10 +55,11 @@ class _DeviceComponentWidgetState extends State { backgroundColor: Colors.white, highlightColor: Colors.white, borderRadius: 20.rpx, - padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 36.rpx, 55.rpx, 52.rpx), + padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 36.rpx, 55.rpx, 36.rpx), onTap: () async {}, child: Column( crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.max, children: [ Row( @@ -246,14 +247,14 @@ class _DeviceComponentWidgetState extends State { .getDeviceList(group: 'room') .then((apiResponse) { if (apiResponse.code != HttpStatusCodes.ok) { - try { - WebviewTestController webviewTestController = - Get.find(); - webviewTestController.web.jsbridge?.dart - .alterDevice(); - } catch (e) { - ef.log("[h5]通知列表更新报错:$e"); - } + try { + WebviewTestController webviewTestController = + Get.find(); + webviewTestController.web.jsbridge?.dart + .alterDevice(); + } catch (e) { + ef.log("[h5]通知列表更新报错:$e"); + } TopSlideNotification.show( Get.context!, text: apiResponse.msg!, @@ -638,7 +639,7 @@ class _DeviceComponentWidgetState extends State { await read!.characteristic.setNotifyValue(true); final write = - bledevice.getresource('ffe0/ffe1'); // 与 read 同 characteristic + bledevice.getresource('ffe0/ffe1'); // 与 read 同 characteristic const int maxRetries = 2; for (int attempt = 0; attempt < maxRetries; attempt++) { final completer = Completer(); diff --git a/lib/pages/mh_page/device/device.dart b/lib/pages/mh_page/device/device.dart index 0ede993..25013b0 100644 --- a/lib/pages/mh_page/device/device.dart +++ b/lib/pages/mh_page/device/device.dart @@ -209,10 +209,10 @@ class DeviceInfoWidget extends GetView { WebviewTestController webviewTestController = Get.find(); - await webviewTestController.web.jsbridge?.dart + webviewTestController.web.jsbridge?.dart .pageActive(false); await Future.delayed(Duration(seconds: 1)); - await webviewTestController.web.jsbridge?.dart + webviewTestController.web.jsbridge?.dart .appToHtmlDevice(device); MainPageBBottomChange.jumpTo(2); Get.until((route) => diff --git a/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart b/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart index ca157c9..ddfc4f3 100644 --- a/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart +++ b/lib/pages/mh_page/homepage/component/HomeDeviceStausWidget.dart @@ -79,11 +79,10 @@ class _HomeDeviceStausWidgetState extends State { try { var device = widget.deviceStatus; WebviewTestController webviewTestController = Get.find(); - - await webviewTestController.web.jsbridge?.dart + webviewTestController.web.jsbridge?.dart .pageActive(false); await Future.delayed(Duration(seconds: 1)); - await webviewTestController.web.jsbridge?.dart + webviewTestController.web.jsbridge?.dart .appToHtmlDevice(device); MainPageBBottomChange.jumpTo(2); } catch (e) { diff --git a/lib/pages/mh_page/test/WebviewTestModel.dart b/lib/pages/mh_page/test/WebviewTestModel.dart index cc84fea..ace3f9a 100644 --- a/lib/pages/mh_page/test/WebviewTestModel.dart +++ b/lib/pages/mh_page/test/WebviewTestModel.dart @@ -7,9 +7,11 @@ import 'package:easyweb/base/easyws.dart'; import 'package:easyweb/base/minisdk.dart'; import 'package:easyweb/easyweb.dart'; import 'package:ef/ef.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:vbvs_app/common/color/ServiceConstant.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'; import 'package:vbvs_app/controller/user_info_controller.dart'; import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; @@ -31,6 +33,7 @@ class WebviewTestController extends GetControllerEx { WebviewTestController() : super(WebviewTestModel()) { web = WebviewHelper( + isheadless: true, jsbridge: buildsdk( // father: this, // clientId: '494641114', @@ -89,7 +92,7 @@ class WebviewTestController extends GetControllerEx { }); //sdk定义接口 bridge.sdk.querySelectDevice((args) async { - ef.log('updateBlueToothStatus: $args'); + ef.log('querySelectDevice: $args'); // bluetooth = args[0]; MHTHomeController deviceController = Get.find(); await deviceController.getDeviceList(group: 'room'); @@ -134,10 +137,24 @@ class WebviewTestController extends GetControllerEx { var data = await homeController.restoreTimer(args); return data; }); + bridge.sdk.toBindDevice((args) async { + ef.log('queryInstantData: $args'); + Get.toNamed("/mHTDeviceTypePage"); + return true; + }); }); } catch (e, s) { ef.log('$e,$s'); } + + // try { + // web.runApp('mhtControl').then((x) { + // ready.value = true; + // web.build(); + // }); + // } catch (e, s) { + // ef.log('$e,$s'); + // } } late WebviewHelper web; var ready = false.obs; @@ -288,6 +305,14 @@ class WebviewTestController extends GetControllerEx { class WebviewTestView extends GetComponent { WebviewTestView({super.key, super.oncreate}); + @override + WebviewTestController newinstance() { + if (ef.kvRoot.WebviewTestController == null) { + ef.kvRoot.WebviewTestController = WebviewTestController(); + } + return ef.kvRoot.WebviewTestController; + } + @override Widget build(BuildContext context) { UserInfoController userInfoController = Get.find(); @@ -301,7 +326,7 @@ class WebviewTestView extends GetComponent { }); return Scaffold( - backgroundColor: Colors.black12, + backgroundColor: Colors.transparent, body: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.max, @@ -311,34 +336,66 @@ class WebviewTestView extends GetComponent { : MainAxisAlignment.center, children: [ Obx(() { - if (userInfoController.model.login! == null || - userInfoController.model.login! == 0) { - return Center( - // 包一层 Center,强制水平和垂直都居中 - child: Text( - "登录进行设备控制".tr, - style: TextStyle(color: Colors.white, fontSize: 30.rpx), + return Visibility( + visible: userInfoController.model.login! == null || + userInfoController.model.login! == 0, + child: Center( + child: InkWell( + onTap: () => Get.toNamed("/loginPage"), + child: RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Stack( + children: [ + Text( + "登录", + style: TextStyle( + color: stringToColor("#84F5FF"), + fontSize: 30.rpx, + ), + ), + Positioned( + bottom: 0, // 控制下划线与文字的间距 + left: 0, + right: 0, + child: Container( + height: 1, // 下划线粗细 + color: stringToColor("#84F5FF"), + ), + ), + ], + ), + ), + TextSpan( + text: "进行设备控制", + style: TextStyle( + color: Colors.white, + fontSize: 30.rpx, + ), + ), + ], + ), + ), ), - ); - } - - return Expanded( - child: Align( - alignment: Alignment.topLeft, - child: controller.ready.value - ? ((controller.cnt.value % 2 == 0) - ? controller.web.build( - key: ValueKey("A"), - headless: false, - ) - : controller.web.build( - key: ValueKey("B"), - headless: false, - )) - : Container(), ), ); }), + Obx(() { + return Visibility( + visible: userInfoController.model.login! != null && + userInfoController.model.login! == 1, + child: Expanded( + child: Align( + alignment: Alignment.topLeft, + child: Obx( + () => controller.ready.value + ? controller.web.build() + : Container(), + ), + ), + )); + }), ], ), );