合并更新

This commit is contained in:
wyf
2025-07-07 15:57:52 +08:00
parent 471fbc94b7
commit 671ac832a5
12 changed files with 223 additions and 96 deletions

View File

@@ -4,6 +4,7 @@ import 'dart:convert';
import 'package:EasyDartModule/EasyDartModule.dart'; import 'package:EasyDartModule/EasyDartModule.dart';
import 'package:EasyDartModule/base/logger/Logger.dart'; import 'package:EasyDartModule/base/logger/Logger.dart';
import 'package:EasyDartModule/base/websocket/WebSocket.dart'; import 'package:EasyDartModule/base/websocket/WebSocket.dart';
import 'package:easyweb/utils/appmanger.dart';
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -106,6 +107,8 @@ Future<void> main() async {
// // 初始化 flutter_xupdate android app 更新 // // 初始化 flutter_xupdate android app 更新
// initXUpdate(); // initXUpdate();
initwebService();
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) { .then((_) {
@@ -113,6 +116,15 @@ Future<void> main() async {
}); });
} }
void initwebService() {
ef.kvRoot.appmanger = MiniAppManager(assetsfilePath: 'assets/file.json');
ef.kvRoot.appmanger.register(["mhtControl"]);
ef.kvRoot.appmanger.init().then((x) {
//先加载,后检测更新..
ef.kvRoot.appmanger.start("https://wyf.it.real.he-info.cn:94/apk/webapp/");
});
}
initLanguageSetting() { initLanguageSetting() {
try { try {
Get.put(LanguageController()); Get.put(LanguageController());

View File

@@ -20,7 +20,7 @@ class _MattressControlPageState extends State<MattressControlPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LayoutBuilder( return LayoutBuilder(
builder: (context, bodySize) => GestureDetector( builder: (context, bodySize) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), // onTap: () => FocusScope.of(context).unfocus(),
child: Container( child: Container(
decoration: const BoxDecoration( decoration: const BoxDecoration(
image: DecorationImage( image: DecorationImage(

View File

@@ -18,11 +18,22 @@ class _MhAboutUsPageState extends State<MhAboutUsPage> {
void initState() { void initState() {
super.initState(); super.initState();
// pdfController.loadPdf(); // pdfController.loadPdf();
String url;
switch (AppConstants().ent_type) {
case 1:
url = "https://mp.weixin.qq.com/s/BrD3fTT2J2R-DxZrUuM4rw";
break;
case 2:
url = "https://mp.weixin.qq.com/s/7BvvprVDqX1eOzM3Lms8dg";
break;
case 3:
url = "https://mp.weixin.qq.com/s/BrD3fTT2J2R-DxZrUuM4rw";
break;
default:
url = "https://mp.weixin.qq.com/s/BrD3fTT2J2R-DxZrUuM4rw";
}
widget.webView = MyWebView( widget.webView = MyWebView(
url: AppConstants().ent_type == 1 url: url,
? "https://mp.weixin.qq.com/s/BrD3fTT2J2R-DxZrUuM4rw"
: "https://mp.weixin.qq.com/s/7BvvprVDqX1eOzM3Lms8dg",
onLoad: () { onLoad: () {
print('网页载入完毕'); print('网页载入完毕');
}, },

View File

@@ -230,14 +230,6 @@ class _DeviceComponentWidgetState extends State<DeviceComponentWidget> {
TopSlideNotification.show(context, TopSlideNotification.show(context,
text: response.msg!); text: response.msg!);
if (response.code == HttpStatusCodes.ok) { if (response.code == HttpStatusCodes.ok) {
try {
WebviewTestController webviewTestController =
Get.find();
webviewTestController.web.jsbridge?.dart
.unBindDevice();
} catch (e) {
ef.log("[h5]通知列表更新报错:$e");
}
homeController.getPersonList(); homeController.getPersonList();
//请求绑定设备列表 //请求绑定设备列表
// homeController.getSleepReport(); // homeController.getSleepReport();
@@ -254,6 +246,14 @@ class _DeviceComponentWidgetState extends State<DeviceComponentWidget> {
.getDeviceList(group: 'room') .getDeviceList(group: 'room')
.then((apiResponse) { .then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) { if (apiResponse.code != HttpStatusCodes.ok) {
try {
WebviewTestController webviewTestController =
Get.find();
webviewTestController.web.jsbridge?.dart
.alterDevice();
} catch (e) {
ef.log("[h5]通知列表更新报错:$e");
}
TopSlideNotification.show( TopSlideNotification.show(
Get.context!, Get.context!,
text: apiResponse.msg!, text: apiResponse.msg!,

View File

@@ -58,7 +58,8 @@ class DeviceInfoWidget extends GetView {
children: [ children: [
Text( Text(
deviceListController.model.deviceList[index]['name'] ?? deviceListController.model.deviceList[index]['name'] ??
'SWES系列 01号智能一键入眠床', getNameByType(
deviceListController.model.deviceList[index]),
style: TextStyle( style: TextStyle(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: Colors.white, color: Colors.white,
@@ -127,14 +128,14 @@ class DeviceInfoWidget extends GetView {
.model.deviceList[index] .model.deviceList[index]
["status"]?["status"]) == ["status"]?["status"]) ==
1 1
? '在线' ? '已绑定'
: '离线', : '已绑定',
valueColor: (deviceListController valueColor: (deviceListController
.model.deviceList[index] .model.deviceList[index]
["status"]?["status"]) == ["status"]?["status"]) ==
1 1
? Color(0xFF6BFDAC) ? Color(0xFF6BFDAC)
: Color(0xFFFF7159)), : Color(0xFF6BFDAC)),
// Row( // Row(
// mainAxisSize: MainAxisSize.max, // mainAxisSize: MainAxisSize.max,
// children: [ // children: [
@@ -207,15 +208,12 @@ class DeviceInfoWidget extends GetView {
try { try {
WebviewTestController webviewTestController = WebviewTestController webviewTestController =
Get.find(); Get.find();
var future = webviewTestController
.web.jsbridge?.dart
.appToHtmlDevice(device);
Future.delayed(Duration(seconds: 5), () {
return;
});
await future;
await webviewTestController.web.jsbridge?.dart await webviewTestController.web.jsbridge?.dart
.pageActive(false); .pageActive(false);
await Future.delayed(Duration(seconds: 1));
await webviewTestController.web.jsbridge?.dart
.appToHtmlDevice(device);
MainPageBBottomChange.jumpTo(2); MainPageBBottomChange.jumpTo(2);
Get.until((route) => Get.until((route) =>
Get.currentRoute == Get.currentRoute ==
@@ -387,15 +385,17 @@ class DeviceInfoWidget extends GetView {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
TopSlideNotification.show( // TopSlideNotification.show(
context, // context,
text: "功能开发中...", // text: "功能开发中...",
); // );
// var a = [device["bindMacA"]]; // var a = [device["bindMacA"]];
// if ("${device["bindMacB"]}".length > 6) { // if ("${device["bindMacB"]}".length > 6) {
// a.add(device["bindMacB"]); // a.add(device["bindMacB"]);
// } // }
// Get.toNamed("/sleepWebview", arguments: a); // Get.toNamed("/sleepWebview", arguments: a);
Get.toNamed("/mhtSleepReportReturnPage",
arguments: device);
}, },
child: Container( child: Container(
height: MediaQuery.sizeOf(context).height * 0.1, height: MediaQuery.sizeOf(context).height * 0.1,
@@ -464,4 +464,16 @@ class DeviceInfoWidget extends GetView {
], ],
); );
} }
getNameByType(device) {
if (device['device_type'] == null) {
return '未知类型设备'.tr;
}
if (device['device_type'] == 2) {
return 'SWES 智能床'.tr;
}
if (device['device_type'] == 3) {
return 'SWES 智能床垫'.tr;
}
}
} }

View File

@@ -164,13 +164,13 @@ class _MHTBindDeviceTypePageState extends State<MHTBindDeviceTypePage> {
return CustomCard( return CustomCard(
borderRadius: 20.rpx, borderRadius: 20.rpx,
onTap: () { onTap: () {
if (type == 2) { // if (type == 2) {
TopSlideNotification.show( // TopSlideNotification.show(
context, // context,
text: "当前类型不支持绑定".tr, // text: "当前类型不支持绑定".tr,
); // );
return; // return;
} // }
MHTBlueToothController mhtBlueToothController = Get.find(); MHTBlueToothController mhtBlueToothController = Get.find();
mhtBlueToothController.model.deviceType = type.toInt(); mhtBlueToothController.model.deviceType = type.toInt();
Get.toNamed("/mHTBlueteethDevicePage", arguments: data); Get.toNamed("/mHTBlueteethDevicePage", arguments: data);

View File

@@ -79,14 +79,12 @@ class _HomeDeviceStausWidgetState extends State<HomeDeviceStausWidget> {
try { try {
var device = widget.deviceStatus; var device = widget.deviceStatus;
WebviewTestController webviewTestController = Get.find(); WebviewTestController webviewTestController = Get.find();
var future = webviewTestController.web.jsbridge?.dart
.appToHtmlDevice(device);
Future.delayed(Duration(seconds: 5), () {
return;
});
await future;
await webviewTestController.web.jsbridge?.dart await webviewTestController.web.jsbridge?.dart
.pageActive(false); .pageActive(false);
await Future.delayed(Duration(seconds: 1));
await webviewTestController.web.jsbridge?.dart
.appToHtmlDevice(device);
MainPageBBottomChange.jumpTo(2); MainPageBBottomChange.jumpTo(2);
} catch (e) { } catch (e) {
DailyLogUtils.writeError("发生异常: $e"); DailyLogUtils.writeError("发生异常: $e");

View File

@@ -102,6 +102,7 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
homeController.updateAll(); homeController.updateAll();
}); });
} }
//themeController.currentColor.sc5,
if (homeController.personnelList.value.length != 0) if (homeController.personnelList.value.length != 0)
return Padding( return Padding(
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
@@ -125,6 +126,16 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
Text(
'健康报告'.tr,
style: TextStyle(
fontFamily: 'Readex Pro',
color:
themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
),
ScrollbarTheme( ScrollbarTheme(
data: ScrollbarThemeData( data: ScrollbarThemeData(
thumbColor: MaterialStateProperty.all( thumbColor: MaterialStateProperty.all(
@@ -278,6 +289,7 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
'assets/images/new_background.png', 'assets/images/new_background.png',
'arrow': false, 'arrow': false,
'noBackImg': true, 'noBackImg': true,
'person_show': false,
}, },
), ),
); );

View File

@@ -1,3 +1,6 @@
import 'dart:async';
import 'package:easyweb/utils/appmanger.dart';
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
@@ -34,6 +37,7 @@ class _NewHomePageState extends State<NewHomePage> {
GlobalController gloablController = Get.find(); GlobalController gloablController = Get.find();
WeatherModelController weatherModelController = Get.find(); WeatherModelController weatherModelController = Get.find();
// var selectedDayIndex = (6).obs; // var selectedDayIndex = (6).obs;
StreamSubscription? _newVersionSubscription;
@override @override
void initState() { void initState() {
@@ -71,6 +75,28 @@ class _NewHomePageState extends State<NewHomePage> {
homeController.homeSleepDays.value.length - 1; homeController.homeSleepDays.value.length - 1;
} }
}); });
try {
_newVersionSubscription =
ef.kvRoot.appmanger.onAppUpdate.stream.listen((MiniAppPkg pkg) {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text("发现新版本"),
content: Text("新版本号:${pkg.version}"),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(),
child: Text("知道了"),
),
],
);
},
);
});
} catch (e) {
print(e);
}
} }
getWeekName(int i) { getWeekName(int i) {

View File

@@ -32,22 +32,17 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
WebviewTestController() : super(WebviewTestModel()) { WebviewTestController() : super(WebviewTestModel()) {
web = WebviewHelper( web = WebviewHelper(
jsbridge: buildsdk( jsbridge: buildsdk(
<<<<<<< HEAD
// father: this, // father: this,
// clientId: '494641114', // clientId: '494641114',
// dbgserverUrl: 'ws://192.168.1.2:9001', // dbgserverUrl: 'ws://192.168.1.2:9001',
), ),
=======
father: this,
clientId: '494641114',
// dbgserverUrl: 'ws://192.168.1.2:9001',
),
>>>>>>> 58b2bebe936bdd7239529662ef20b531f2143de4
settings: buildsettings(), settings: buildsettings(),
params: PlatformHeadlessInAppWebViewCreationParams( params: PlatformHeadlessInAppWebViewCreationParams(
initialUrlRequest: URLRequest( initialUrlRequest: URLRequest(
url: WebUri( url: WebUri(
'https://wyf.it.real.he-info.cn:94/goods-front/index.html'), 'https://wyf.it.real.he-info.cn:94/goods-front/index.html'),
// url: WebUri(
// 'http://192.168.1.2:8888'),
), ),
onLoadStop: (controller, url) { onLoadStop: (controller, url) {
setState(() => ready.value = true); setState(() => ready.value = true);
@@ -140,19 +135,6 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
return data; return data;
}); });
}); });
web
//.file(
// url: 'https://wsl.it.real.he-info.cn:94/webdemo/web.zip',
// pretag: 'https://wsl.it.real.he-info.cn:94/webdemo/',
//)
.network()
.then((value) {
if (value) {
setState(() {
ready.value = true;
});
}
});
} catch (e, s) { } catch (e, s) {
ef.log('$e,$s'); ef.log('$e,$s');
} }
@@ -271,6 +253,36 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
ws.connect(); ws.connect();
} }
//EasyFlutter End //EasyFlutter End
@override
void onInit() {
ef.log("webview test init =>${DateTime.now()}");
super.onInit();
try {
ef.kvRoot.appmanger.find("mhtControl").then((x) {
x!.load().then((y) {
ef.log("webview test res init loaded =>${DateTime.now()}");
web
.file(
url: 'https://wyf.it.real.he-info.cn:94/goods-front/index.html',
pretag: 'https://wyf.it.real.he-info.cn:94/goods-front/',
raw: y,
)
//.network()
.then((value) {
if (value) {
//资源准备完成..
setState(() {
ready.value = true;
});
}
});
});
});
} catch (e, s) {
ef.log('$e,$s');
}
}
} }
class WebviewTestView extends GetComponent<WebviewTestController> { class WebviewTestView extends GetComponent<WebviewTestController> {

View File

@@ -178,12 +178,50 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
child: Scaffold( child: Scaffold(
backgroundColor: Colors.transparent, // 背景透明 backgroundColor: Colors.transparent, // 背景透明
appBar: AppBar( // appBar: AppBar(
// backgroundColor: widget.data['backgroundColor'] != null
// ? widget.data['backgroundColor'].withOpacity(0.8)
// : themeController.currentColor.sc5,
// automaticallyImplyLeading: false,
// iconTheme: IconThemeData(color: themeController.currentColor.sc3),
// titleSpacing: 0,
// title: Container(
// width: double.infinity,
// height: 180.rpx,
// child: Stack(
// alignment: Alignment.center,
// children: [
// /// 居中标题
// Text(
// '健康报告'.tr,
// style: TextStyle(
// fontFamily: 'Readex Pro',
// color: themeController.currentColor.sc3,
// letterSpacing: 0,
// fontSize: 30.rpx,
// ),
// ),
// /// 左边返回按钮
// if (widget.data['arrow'] == null ||
// widget.data['arrow'] == true)
// Positioned(
// left: 0,
// child: returnIconButtomNew,
// ),
// ],
// ),
// ),
// ),
appBar: (widget.data['arrow'] != null &&
widget.data['arrow'] == false)
? null
: AppBar(
backgroundColor: widget.data['backgroundColor'] != null backgroundColor: widget.data['backgroundColor'] != null
? widget.data['backgroundColor'].withOpacity(0.8) ? widget.data['backgroundColor'].withOpacity(0.8)
: themeController.currentColor.sc5, : themeController.currentColor.sc5,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
iconTheme: IconThemeData(color: themeController.currentColor.sc3), iconTheme:
IconThemeData(color: themeController.currentColor.sc3),
titleSpacing: 0, titleSpacing: 0,
title: Container( title: Container(
width: double.infinity, width: double.infinity,
@@ -213,6 +251,7 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
), ),
), ),
), ),
body: SafeArea( body: SafeArea(
top: true, top: true,
child: SingleChildScrollView( child: SingleChildScrollView(
@@ -551,6 +590,8 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
child: getTimeWidget(), child: getTimeWidget(),
), ),
), ),
if (widget.data['person_show'] == null ||
widget.data['person_show'] != false)
Padding( Padding(
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
30.rpx, 0.rpx, 30.rpx, 51.rpx), 30.rpx, 0.rpx, 30.rpx, 51.rpx),

View File

@@ -27,6 +27,7 @@ import 'package:vbvs_app/pages/mh_page/device_people_info.dart';
import 'package:vbvs_app/pages/mh_page/device_share_page.dart'; import 'package:vbvs_app/pages/mh_page/device_share_page.dart';
import 'package:vbvs_app/pages/mh_page/edit_bed.dart'; import 'package:vbvs_app/pages/mh_page/edit_bed.dart';
import 'package:vbvs_app/pages/mh_page/help/article.dart'; import 'package:vbvs_app/pages/mh_page/help/article.dart';
import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page_return.dart';
import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart'; import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart';
import 'package:vbvs_app/pages/mh_page/privacy_policy.dart'; import 'package:vbvs_app/pages/mh_page/privacy_policy.dart';
import 'package:vbvs_app/pages/mh_page/user/page/edit_userinfo_page.dart'; import 'package:vbvs_app/pages/mh_page/user/page/edit_userinfo_page.dart';
@@ -110,6 +111,8 @@ var mhroutes = {
"/shareDeviceDetail": (context) => ShareDeviceDetailWidget(), "/shareDeviceDetail": (context) => ShareDeviceDetailWidget(),
"/messageDetail": (context, {arguments}) => "/messageDetail": (context, {arguments}) =>
MessageDetailPage(data: arguments), MessageDetailPage(data: arguments),
"/mhtSleepReportReturnPage": (context, {arguments}) =>
MhtSleepReportReturnPage(data: arguments),
}; };
var mhonGenerateRoute = (RouteSettings settings) { var mhonGenerateRoute = (RouteSettings settings) {
final String? name = settings.name; // 获取路由名称,如 /news 或 /search final String? name = settings.name; // 获取路由名称,如 /news 或 /search