Merge remote-tracking branch 'origin/master'

This commit is contained in:
czz
2025-07-01 22:20:10 +08:00
278 changed files with 38905 additions and 346 deletions

View File

@@ -78,9 +78,13 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
List<Placemark> placemarks = await placemarkFromCoordinates(
position.latitude, position.longitude,
localeIdentifier: language);
List<Placemark> placemarks = [];
// placemarks = await placemarkFromCoordinates(position.latitude, position.longitude,
// localeIdentifier: language);
placemarks = await placemarkFromCoordinates(
position.latitude,
position.longitude,
);
if (placemarks.isNotEmpty) {
model.cityName = placemarks[0].locality ?? "未知数据".tr;
@@ -131,9 +135,9 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
List<Placemark> placemarks = await placemarkFromCoordinates(
model.latitude!, model.longitude!,
localeIdentifier: language);
List<Placemark> placemarks = [];
// placemarks = await placemarkFromCoordinates(model.latitude!, model.longitude!,
// localeIdentifier: language);
if (placemarks.isNotEmpty) {
model.cityName = placemarks[0].locality ?? "未知数据".tr;

View File

@@ -195,9 +195,9 @@ Future showDateSelectionDialog(BuildContext context,
width: 100.rpx,
height: 60.rpx,
alignment: Alignment.center,
child: Text("",
child: Text("",
style: TextStyle(
fontSize: 30.rpx, color: Colors.white)),
fontSize: 30.rpx, color: stringToColor("#84F5FF"))),
),
),
],
@@ -348,10 +348,10 @@ Future<void> showWeightPickerDialog(
width: 100.rpx,
height: 60.rpx,
child: Text(
"",
"",
style: TextStyle(
fontSize: 30.rpx,
color: Colors.white,
color: stringToColor("#84F5FF"),
),
),
)),
@@ -475,10 +475,10 @@ Future<void> showHeightPickerDialog(
width: 100.rpx,
height: 60.rpx,
child: Text(
"",
"",
style: TextStyle(
fontSize: 30.rpx,
color: Colors.white,
color: stringToColor("#84F5FF"),
),
),
)),
@@ -701,7 +701,7 @@ Future showDayTimeSelectionDialog(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
// 顶部栏:取消 - 标题 - 确
// 顶部栏:取消 - 标题 - 确
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -742,9 +742,9 @@ Future showDayTimeSelectionDialog(
width: 100.rpx,
height: 60.rpx,
alignment: Alignment.center,
child: Text("".tr,
child: Text("".tr,
style: TextStyle(
fontSize: 30.rpx, color: Colors.white)),
fontSize: 30.rpx, color: stringToColor("#84F5FF"))),
),
),
],
@@ -879,9 +879,9 @@ Future showOneSelectionDialog(
alignment: Alignment.center,
width: 100.rpx,
height: 60.rpx,
child: Text("".tr,
child: Text("".tr,
style: TextStyle(
fontSize: 30.rpx, color: Colors.white)),
fontSize: 30.rpx, color: stringToColor("#84F5FF"))),
),
),
],

View File

@@ -543,8 +543,7 @@ class _BodyDevicePageState extends State<BodyDeviceWidget> {
errorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
Colors.red,
color: Colors.red,
width: 1.rpx,
),
borderRadius:
@@ -554,8 +553,7 @@ class _BodyDevicePageState extends State<BodyDeviceWidget> {
focusedErrorBorder:
OutlineInputBorder(
borderSide: BorderSide(
color:
Colors.red,
color: Colors.red,
width: 1.rpx,
),
borderRadius:
@@ -563,8 +561,7 @@ class _BodyDevicePageState extends State<BodyDeviceWidget> {
8.rpx),
),
filled: false,
fillColor:
Colors.white,
fillColor: Colors.white,
),
style: TextStyle(
fontFamily: 'Inter',

View File

@@ -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/homepage/controller/mht_home_controller.dart';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class BluetoothPage extends StatefulWidget {
@@ -197,6 +198,10 @@ class _BluetoothPageState extends State<BluetoothPage> {
.unbindDevice(obsData);
await deviceListController
.getDeviceList();
MHTHomeController homeController =
Get.find();
homeController.selectDevcie.value =
"";
try {
WebviewTestController
webviewTestController =

View File

@@ -4,11 +4,14 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/appFontsize.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/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart';
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
import 'package:vbvs_app/pages/mh_page/test/WebviewTestModel.dart';
class DeviceInfoWidget extends GetView {
int index;
@@ -200,8 +203,26 @@ class DeviceInfoWidget extends GetView {
width: 150.rpx,
height: 90.rpx,
child: FFButtonWidget(
onPressed: () {
// deviceControllerChange(device);
onPressed: () async {
try {
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
.pageActive();
MainPageBBottomChange.jumpTo(2);
Get.until((route) =>
Get.currentRoute ==
"/mianPageBottomChange");
} catch (e) {
DailyLogUtils.writeError("发生异常: $e");
}
},
text: '控制',
options: FFButtonOptions(

View File

@@ -170,8 +170,28 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
mac: r.device.remoteId.str.replaceAll(':', ''));
}).toList();
final currentDevices = mhtBlueToothController.model.blueRawData ?? [];
final newDevices = <BlueToothDataModel>[];
for (var newDevice in filteredResults) {
// 检查设备是否已存在
final existingIndex =
currentDevices.indexWhere((d) => d.mac == newDevice.mac);
if (existingIndex >= 0) {
// 更新已有设备信息(如信号强度)
currentDevices[existingIndex] = newDevice;
} else {
// 添加新设备
newDevices.add(newDevice);
}
}
setState(() {
mhtBlueToothController.model.blueRawData = filteredResults;
mhtBlueToothController.model.blueRawData = [
...currentDevices,
...newDevices
];
});
});
@@ -189,6 +209,7 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
void _startPeriodicScan() {
_timer = Timer.periodic(Duration(seconds: 10), (timer) {
if (mhtBlueToothController.shouldScan.value && !isScanning) {
_removeOldDevices(); // 先清理老旧设备
_startScanning();
}
});
@@ -693,4 +714,20 @@ class _MHTBlueteethDevicePageState extends State<MHTBlueteethDevicePage> {
),
);
}
void _removeOldDevices() {
final now = DateTime.now();
final currentDevices = mhtBlueToothController.model.blueRawData ?? [];
// 移除30秒内未出现的设备
final updatedDevices = currentDevices.where((device) {
return now.difference(device.lastSeen) < Duration(seconds: 30);
}).toList();
if (updatedDevices.length != currentDevices.length) {
setState(() {
mhtBlueToothController.model.blueRawData = updatedDevices;
});
}
}
}

View File

@@ -39,7 +39,7 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
peopleList.add({
'mac': device?.macA,
'gender': "",
'id':device!.macAID,
'id': device!.macAID,
});
// Initialize person B if exists
@@ -47,7 +47,7 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
peopleList.add({
'mac': device.macB,
'gender': "",
'id':device!.macBID,
'id': device!.macBID,
});
}
@@ -113,7 +113,7 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
? DateFormat('yyyy-MM-dd').format(personData['birthday'])
: personData['birthday'],
'contact': personData['contact'],
'id':personData['id'],
'id': personData['id'],
};
await requestWithLog(
logTitle: "保存用户信息",
@@ -124,7 +124,8 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
print(res);
},
onFailure: (res) {
TopSlideNotification.show(context,text: res.msg!,textColor: themeController.currentColor.sc9);
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
print(res);
},
);
@@ -306,42 +307,42 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
width: double.infinity,
height: 90.rpx,
decoration: BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'性别',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode());
Future.delayed(
const Duration(milliseconds: 250),
() {
showOneSelectionDialog(context,
arr: ["", ""],
checkIndex: peopleList[index]
['gender'] ==
""
? 0
: 1, checkChange: (sindex) {
setState(() {
peopleList[index]['gender'] =
sindex == 0 ? "" : "";
});
}).then((d) {});
child: InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode());
Future.delayed(
const Duration(milliseconds: 250),
() {
showOneSelectionDialog(context,
arr: ["", ""],
checkIndex: peopleList[index]
['gender'] ==
""
? 0
: 1, checkChange: (sindex) {
setState(() {
peopleList[index]['gender'] =
sindex == 0 ? "" : "";
});
},
child: Row(
}).then((d) {});
});
},
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'性别',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
Row(
mainAxisSize: MainAxisSize.max,
children: [
Container(
@@ -365,8 +366,8 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
),
],
),
),
],
],
),
),
),
getLine(),
@@ -376,43 +377,42 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
margin: EdgeInsets.only(
left: 40.rpx, right: 35.rpx),
decoration: BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'身高(cm)',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
child: InkWell(
onTap: () {
FocusScope.of(context).unfocus();
Future.delayed(
const Duration(milliseconds: 250),
() {
showHeightPickerDialog(
context,
initialHeight: int.tryParse(
peopleList[index]['height'] ??
'170') ??
170,
onConfirm: (int selectedHeight) {
setState(() {
peopleList[index]['height'] =
selectedHeight.toString();
});
},
);
});
},
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'身高(cm)',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
),
InkWell(
onTap: () {
FocusScope.of(context).unfocus();
Future.delayed(
const Duration(milliseconds: 250),
() {
showHeightPickerDialog(
context,
initialHeight: int.tryParse(
peopleList[index]
['height'] ??
'170') ??
170,
onConfirm: (int selectedHeight) {
setState(() {
peopleList[index]['height'] =
selectedHeight.toString();
});
},
);
});
},
child: Row(
Row(
children: [
Text(
peopleList[index]['height'] !=
@@ -431,8 +431,8 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
size: 48.rpx),
],
),
),
],
],
),
),
),
getLine(),
@@ -442,39 +442,39 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
margin: EdgeInsets.only(
left: 40.rpx, right: 35.rpx),
decoration: BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'体重(kg)',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
child: InkWell(
onTap: () {
FocusScope.of(context).unfocus();
Future.delayed(
const Duration(milliseconds: 250),
() {
showWeightPickerDialog(
context,
initialWeight: "0",
onConfirm: (int selectedWeight) {
setState(() {
peopleList[index]['weight'] =
selectedWeight.toString();
});
},
);
});
},
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'体重(kg)',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
),
InkWell(
onTap: () {
FocusScope.of(context).unfocus();
Future.delayed(
const Duration(milliseconds: 250),
() {
showWeightPickerDialog(
context,
initialWeight: "0",
onConfirm: (int selectedWeight) {
setState(() {
peopleList[index]['weight'] =
selectedWeight.toString();
});
},
);
});
},
child: Row(
Row(
children: [
Text(
peopleList[index]['weight'] !=
@@ -493,8 +493,8 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
size: 48.rpx),
],
),
),
],
],
),
),
),
getLine(),
@@ -504,46 +504,44 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
margin: EdgeInsets.only(
left: 40.rpx, right: 35.rpx),
decoration: BoxDecoration(),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'生日',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode());
Future.delayed(
const Duration(milliseconds: 250),
() {
showDateSelectionDialog(context,
checkDate: peopleList[index]
['birthday'] is DateTime
? peopleList[index]
['birthday']
: DateTime.tryParse(
peopleList[index][
'birthday'] ??
'') ??
DateTime.now(),
checkChange: (DateTime d) {
setState(() {
peopleList[index]['birthday'] =
d;
});
}).then((d) {});
child: InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode());
Future.delayed(
const Duration(milliseconds: 250),
() {
showDateSelectionDialog(context,
checkDate: peopleList[index]
['birthday'] is DateTime
? peopleList[index]['birthday']
: DateTime.tryParse(
peopleList[index]
['birthday'] ??
'') ??
DateTime.now(),
checkChange: (DateTime d) {
setState(() {
peopleList[index]['birthday'] = d;
});
},
child: Row(
}).then((d) {});
});
},
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'生日',
style: TextStyle(
fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7),
fontSize: 30.rpx,
letterSpacing: 0,
),
),
Row(
mainAxisSize: MainAxisSize.max,
children: [
Container(
@@ -574,8 +572,8 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
),
],
),
),
],
],
),
),
),
getLine(),

View File

@@ -1,7 +1,7 @@
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
class BlueToothDataModel {
String name;//设备型号
String name; // 设备型号
bool bind;
String mac;
ScanResult scanResult;
@@ -10,6 +10,7 @@ class BlueToothDataModel {
int type;
String? macAID;
String? macBID;
DateTime lastSeen; // 添加的最后可见时间字段
BlueToothDataModel({
this.name = '',
@@ -19,6 +20,7 @@ class BlueToothDataModel {
required this.type,
this.macA = '',
this.macB = '',
required this.lastSeen, // 添加到构造函数参数
});
factory BlueToothDataModel.fromScanResult(ScanResult result, int type,
@@ -28,6 +30,14 @@ class BlueToothDataModel {
name.isNotEmpty ? name : (result.advertisementData.localName ?? '');
return BlueToothDataModel(
name: finalName, bind: bind, mac: mac, scanResult: result, type: type);
name: finalName,
bind: bind,
mac: mac,
scanResult: result,
type: type,
macA: '', // 保持原有默认值
macB: '', // 保持原有默认值
lastSeen: DateTime.now(), // 设置为当前时间
);
}
}
}

View File

@@ -4,6 +4,7 @@ import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
@@ -37,11 +38,13 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
Widget build(BuildContext context) {
deviceController.getDeviceList(group: 'room').then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
if (context.mounted) {
// TopSlideNotification.show(
// context,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
}
} else {
//请求睡眠报告
// deviceController.getSleepReport();
@@ -255,6 +258,9 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
),
);
}
if (userInfoController.model.login != null &&
userInfoController.model.login == 1)
return Expanded(child: NullDataWidget());
return Container();
}),
@@ -271,7 +277,7 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
'backgroundImg':
'assets/images/new_background.png',
'arrow': false,
'noBackImg':true,
'noBackImg': true,
},
),
);

View File

@@ -45,20 +45,20 @@ class _NewHomePageState extends State<NewHomePage> {
// homeController.getSleepReport();
deviceController.getDeviceNum().then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
// TopSlideNotification.show(
// Get.context!,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
}
});
deviceController.getDeviceList(group: 'room').then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
// TopSlideNotification.show(
// Get.context!,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
} else {
//请求睡眠报告
// deviceController.getSleepReport();
@@ -105,11 +105,11 @@ class _NewHomePageState extends State<NewHomePage> {
Widget build(BuildContext context) {
deviceController.getDeviceList(group: 'room').then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
// TopSlideNotification.show(
// context,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
} else {
//请求睡眠报告
// deviceController.getSleepReport();
@@ -121,21 +121,21 @@ class _NewHomePageState extends State<NewHomePage> {
//请求绑定设备列表
// homeController.getSleepReport();
deviceController.getDeviceNum().then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
}
// if (apiResponse.code != HttpStatusCodes.ok) {
// TopSlideNotification.show(
// Get.context!,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
// }
});
deviceController.getDeviceList(group: 'room').then((apiResponse) {
if (apiResponse.code != HttpStatusCodes.ok) {
TopSlideNotification.show(
Get.context!,
text: apiResponse.msg!,
textColor: themeController.currentColor.sc9,
);
// TopSlideNotification.show(
// Get.context!,
// text: apiResponse.msg!,
// textColor: themeController.currentColor.sc9,
// );
} else {
//请求睡眠报告
// deviceController.getSleepReport();

View File

@@ -32,8 +32,8 @@ class WebviewTestController extends GetControllerEx<WebviewTestModel> {
WebviewTestController() : super(WebviewTestModel()) {
web = WebviewHelper(
jsbridge: buildsdk(
// father: this,
// clientId: '494641114',
father: this,
clientId: '494641114',
// dbgserverUrl: 'ws://192.168.1.2:9001',
),
settings: buildsettings(),

View File

@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:flutter/material.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';

View File

@@ -148,13 +148,16 @@ class _HeartChangeWidgetState extends State<HeartChangeWidget> {
alignment: MainAxisAlignment.center,
widget1: Row(
children: [
Text(
'${data['name']}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: themeController.currentColor.sc3,
fontSize: AppConstants().normal_text_fontSize,
Expanded(
child: Text(
'${data['name']}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: themeController.currentColor.sc3,
fontSize:
AppConstants().normal_text_fontSize,
),
),
),
ClickableContainer(
@@ -261,7 +264,7 @@ class _HeartChangeWidgetState extends State<HeartChangeWidget> {
),
);
} catch (e) {
es.EasyDartModule.logger.error("打鼾监测绘制异常${e}");
es.EasyDartModule.logger.error("打鼾监测绘制异常${e}");
return Container();
}
}

View File

@@ -6,10 +6,10 @@ import 'package:vbvs_app/common/color/appConstants.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/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/date/CalendarController.dart';
import 'package:vbvs_app/controller/home/home_controller.dart';
import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart';
import 'package:vbvs_app/language/AppLanguage.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
@@ -147,8 +147,15 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
_scrollToTargetComponent(sleepReportController.sleepReport);
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
if (MainPageBBottomChange.getCurrentIndex() != null) {
if (MainPageBBottomChange.getCurrentIndex() == 1) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
} else {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);
@@ -609,6 +616,12 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
),
),
),
if (sleepReport.value == null ||
sleepReport.value.isEmpty)
Container(
height: 500.rpx,
child: NullDataWidget(),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
30.rpx, 0.rpx, 30.rpx, 0),
@@ -851,8 +864,16 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
sleepReportController.updateAll();
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
if (MainPageBBottomChange.getCurrentIndex() != null) {
if (MainPageBBottomChange.getCurrentIndex() == 1) {
TopSlideNotification.show(context,
text: res.msg!,
textColor: themeController.currentColor.sc9);
}
} else {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);
@@ -890,8 +911,16 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
sleepReportController.updateAll();
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
if (MainPageBBottomChange.getCurrentIndex() != null) {
if (MainPageBBottomChange.getCurrentIndex() == 1) {
TopSlideNotification.show(context,
text: res.msg!,
textColor: themeController.currentColor.sc9);
}
} else {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
}
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);
@@ -974,9 +1003,17 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
sleepReportController.updateAll();
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!,
textColor: themeController.currentColor.sc9);
if (MainPageBBottomChange.getCurrentIndex() != null) {
if (MainPageBBottomChange.getCurrentIndex() == 1) {
TopSlideNotification.show(context,
text: res.msg!,
textColor: themeController.currentColor.sc9);
}
} else {
TopSlideNotification.show(context,
text: res.msg!,
textColor: themeController.currentColor.sc9);
}
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);