diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcherhs.png differ diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-ldpi/ic_launcherhs.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcherhs.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcherhs.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcherhs.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png new file mode 100644 index 0000000..2e93dee Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcherhs.png differ diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts deleted file mode 100644 index a439442..0000000 --- a/android/settings.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } - - includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -plugins { - id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.0" apply false - id("org.jetbrains.kotlin.android") version "1.8.22" apply false -} - -include(":app") diff --git a/assets/img/icon/arrow_right.svg b/assets/img/icon/arrow_right.svg index 2fa5397..db9e15e 100644 --- a/assets/img/icon/arrow_right.svg +++ b/assets/img/icon/arrow_right.svg @@ -1 +1,9 @@ - \ No newline at end of file + + + + + + + + + diff --git a/assets/img/icon/arrow_right1.svg b/assets/img/icon/arrow_right1.svg new file mode 100644 index 0000000..2fa5397 --- /dev/null +++ b/assets/img/icon/arrow_right1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/component/home_page/DynamicReportDetailWidget.dart b/lib/component/home_page/DynamicReportDetailWidget.dart index bfd516a..bed3f1a 100644 --- a/lib/component/home_page/DynamicReportDetailWidget.dart +++ b/lib/component/home_page/DynamicReportDetailWidget.dart @@ -57,7 +57,7 @@ class _DynamicReportDetailWidgetState extends State { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsetsDirectional.fromSTEB(0, 25.rpx, 0, 25.rpx), + padding: EdgeInsetsDirectional.fromSTEB(0, 0.rpx, 0, 0.rpx), child: Container( width: double.infinity, decoration: BoxDecoration( @@ -119,9 +119,19 @@ class _DynamicReportDetailWidgetState extends State { DateTime dateTime = DateTime.fromMillisecondsSinceEpoch( int.parse(selectedWidgets[0].time!)); String time = MyUtils.formatBindTime(dateTime); - String sleepReportUrl = - "${ServiceConstant.sleep_report_url}?mac=$mac&token=${ServiceConstant.sleep_token}&date=$time"; - Get.toNamed("/sleepReportPage", arguments: sleepReportUrl); + // String sleepReportUrl = + // "${ServiceConstant.sleep_report_url}?mac=$mac&token=${ServiceConstant.sleep_token}&date=$time"; + // Get.toNamed("/sleepReportPage", arguments: sleepReportUrl); + Get.toNamed("/newSleepReportPage", arguments: { + 'date': dateTime != null + ? dateTime.millisecondsSinceEpoch + : DateTime.now().millisecondsSinceEpoch, + "mac": mac, + 'type': 1, + 'name': 'sleep', //'sleep', 'heartRate' 或 'breathe' + // 'itemName': widget.data['id'], + 'person': widget.targetDevice['person'], + }); } else { TopSlideNotification.show(context, text: "当前暂无数据".tr, diff --git a/lib/component/home_page/SleepDateWidget.dart b/lib/component/home_page/SleepDateWidget.dart index 95ff7b5..1cbbc67 100644 --- a/lib/component/home_page/SleepDateWidget.dart +++ b/lib/component/home_page/SleepDateWidget.dart @@ -117,7 +117,7 @@ class _SleepDateWidgetState extends State { letterSpacing: 0.0, color: widget.textColor ?? themeController.currentColor.sc4, - fontWeight: FontWeight.bold, // 加粗 + fontWeight: FontWeight.w500, // 加粗 ), ), if ((widget.score?.trim().isNotEmpty ?? false)) @@ -158,7 +158,7 @@ class _SleepDateWidgetState extends State { iconPadding: EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), color: widget.textColor ?? themeController.currentColor.sc4, textStyle: TextStyle( - fontFamily: 'Inter Tight', + // fontFamily: 'Inter Tight', color: themeController.currentColor.sc3, letterSpacing: 0.0, ), diff --git a/lib/controller/login/login_controller.dart b/lib/controller/login/login_controller.dart index 0e8cdee..660c6a6 100644 --- a/lib/controller/login/login_controller.dart +++ b/lib/controller/login/login_controller.dart @@ -6,6 +6,7 @@ import 'package:fluwx/fluwx.dart'; import 'package:get_storage/get_storage.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart'; +import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/color/app_uri_status.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; @@ -13,6 +14,8 @@ import 'package:vbvs_app/common/util/requestWithLog.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/controller/time/countdown_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; +import 'package:vbvs_app/enum/APPPackageType.dart'; +import 'package:vbvs_app/main.dart'; import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/user_data.dart'; @@ -139,6 +142,7 @@ class LoginController extends GetControllerEx { if (languageController.selectLanguage != null) { language = languageController.selectLanguage.value!.language_code; } + if (language != null && language.isNotEmpty) { if (queryUrl.contains("?")) { queryUrl += "&lang=$language"; @@ -149,6 +153,9 @@ class LoginController extends GetControllerEx { var data = { "userName": model.phone, }; + if (AppConstants().ent_type == APPPackageType.HUANSHUI.code) { + data['code'] = "hzhskj"; + } var response = await EasyDartModule.dio.post(queryUrl, data: jsonEncode(data)); if (response != null) { @@ -203,7 +210,7 @@ class LoginController extends GetControllerEx { EasyDartModule.logger.error('msg:$data'); if (data) { //登陆成功 - // await dealBindProcess(); + await dealBindProcess(); } }); } catch (e) { diff --git a/lib/main.dart b/lib/main.dart index e9cecc8..f3a848c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -398,6 +398,7 @@ class MyApp extends StatelessWidget { // Get.lazyPut(() => UserInfoController()), Get.put(GlobalController()), Get.put(WeatherModelController()), + Get.lazyPut(() => ApplyRepairController()), Get.lazyPut(() => MainPageController()), Get.lazyPut(() => BlueteethBindController()), Get.lazyPut(() => PersonController()), diff --git a/lib/pages/device/instant_body_page.dart b/lib/pages/device/instant_body_page.dart index d45480f..d4f0763 100644 --- a/lib/pages/device/instant_body_page.dart +++ b/lib/pages/device/instant_body_page.dart @@ -125,9 +125,10 @@ class _InstantBodyPageState extends State // 心率 呼吸 体动 呼吸暂停 if ("离床" == inBed) { breathState = "否"; - data["breathRate"] = 0; - data["heartRate"] = 0; - data["bodyMotion"] = 0; + bodyMotion = 0; + breathrate = 0; + heartrate = 0; + snores = "否"; } else { breathState = data["breathState"]; bodyMotion = data['bodyMotion']; diff --git a/lib/pages/device_bind/blueteeth_device_page.dart b/lib/pages/device_bind/blueteeth_device_page.dart index 12a04df..0dd834f 100644 --- a/lib/pages/device_bind/blueteeth_device_page.dart +++ b/lib/pages/device_bind/blueteeth_device_page.dart @@ -360,7 +360,8 @@ class _BlueteethDevicePageState extends State { '最小信号强度'.tr, style: TextStyle( fontFamily: 'Inter', - color: stringToColor("#003058"), + // color: stringToColor("#003058"), + color: Colors.white, fontSize: 26.rpx, letterSpacing: 0.0, ), diff --git a/lib/pages/login/other_login.dart b/lib/pages/login/other_login.dart index 34629ac..5dfa408 100644 --- a/lib/pages/login/other_login.dart +++ b/lib/pages/login/other_login.dart @@ -1,7 +1,6 @@ import 'package:EasyDartModule/EasyDartModule.dart' as edm; import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:fluwx/fluwx.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; @@ -19,7 +18,6 @@ import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; import 'package:vbvs_app/controller/time/countdown_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; -import 'package:vbvs_app/main.dart'; import 'package:vbvs_app/model/api_response.dart'; class OtherLoginPage extends StatefulWidget { @@ -68,7 +66,10 @@ class _OtherLoginPageState extends State { //首次未注册的用户引导去手机号填写页面 //已注册的用户直接跳转首页 if (CommonVariables.isNetWorkOn == false) { - showToast("网络未连接,请开启设备网络后重试"); + TopSlideNotification.show(context, + text: "网络未连接,请开启设备网络后重试".tr, + textColor: themeController.currentColor.sc9); + // showToast("网络未连接,请开启设备网络后重试"); return; } ApiResponse msg = await loginController.loginByWechatCode(code); @@ -82,9 +83,13 @@ class _OtherLoginPageState extends State { // TODO 操作全部跳转页面前成功以后移除监听,防止重复监听,其他方式登录成功也需要移出监听 // fluwxCancelable?.cancel(); } else if (errCode == -4) { - showToast("用户拒绝授权"); + TopSlideNotification.show(context, + text: "用户拒绝授权".tr, textColor: themeController.currentColor.sc9); + // showToast("用户拒绝授权"); } else if (errCode == -2) { - showToast("用户取消授权"); + TopSlideNotification.show(context, + text: "用户取消授权".tr, textColor: themeController.currentColor.sc9); + // showToast("用户取消授权"); } } }); @@ -127,13 +132,14 @@ class _OtherLoginPageState extends State { }, child: Padding( padding: EdgeInsetsDirectional.fromSTEB( - 16.rpx, 10.rpx, 16.rpx, 10.rpx), - child: SvgPicture.asset( - 'assets/img/icon/arrow_left.svg', - width: 25.rpx, - height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 - color: themeController.currentColor.sc3, - ), + 0.rpx, 10.rpx, 16.rpx, 10.rpx), + // child: SvgPicture.asset( + // 'assets/img/icon/arrow_left.svg', + // width: 25.rpx, + // height: 25.rpx, // 如果 SVG 中没有固定颜色,使用 color 设置 + // color: themeController.currentColor.sc3, + // ), + child: returnIconButtomNew, ), ), Expanded( @@ -152,7 +158,9 @@ class _OtherLoginPageState extends State { child: Align( alignment: AlignmentDirectional(0, 0), child: Text( - AppConstants().ent_type == 1?'登录页.欢迎使用太和e护'.tr:"欢迎使用欢睡科技", + AppConstants().ent_type == 1 + ? '登录页.欢迎使用太和e护'.tr + : "欢迎使用欢睡科技", style: TextStyle( fontFamily: 'Inter', fontSize: 48.rpx, @@ -281,8 +289,7 @@ class _OtherLoginPageState extends State { focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - Colors.red, + color: Colors.red, width: 1.rpx, ), borderRadius: @@ -314,7 +321,6 @@ class _OtherLoginPageState extends State { ), ), ), - Align( alignment: AlignmentDirectional(-1, 0), child: Padding( @@ -408,8 +414,7 @@ class _OtherLoginPageState extends State { focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - Colors.red, + color: Colors.red, width: 1.rpx, ), borderRadius: @@ -698,8 +703,7 @@ class _OtherLoginPageState extends State { ), activeColor: stringToColor("#FF9F66"), //固定 - checkColor: - Colors.white, + checkColor: Colors.white, ), )), Expanded( @@ -804,7 +808,9 @@ class _OtherLoginPageState extends State { padding: EdgeInsetsDirectional.fromSTEB( 0, 0, 0, 36.rpx), child: Text( - '登录页.其他登录方式'.tr, + AppConstants().ent_type == 1 + ? '登录页.欢迎使用太和e护'.tr + : "欢迎使用欢睡科技", style: TextStyle( fontFamily: 'Inter', fontSize: 26.rpx, diff --git a/lib/pages/main_bottom/home_page.dart b/lib/pages/main_bottom/home_page.dart index cae727c..ba03f20 100644 --- a/lib/pages/main_bottom/home_page.dart +++ b/lib/pages/main_bottom/home_page.dart @@ -994,12 +994,89 @@ class _HomePageState extends State { ); } + // return Expanded( + // child: SingleChildScrollView( + // child: Column( + // children: List.generate( + // deviceList.length, + // (i) { + // String mac = macList[i]; + // List dailyDataList = + // reportData[mac]!; + // Map? targetDevice = + // deviceList.firstWhereOrNull( + // (device) => device['mac'] == mac, + // ); + // List stateModule = []; + // String currentTime = ""; + // String goalMac = targetDevice?['mac']; + // var person = targetDevice?['person']; + // return DynamicReportDetailWidget( + // key: ValueKey( + // '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key + // targetDevice: targetDevice!, + // sleepDateWidgets: List.generate( + // dailyDataList.length, + // (j) { + // var dayData = dailyDataList[j]; + // DateTime date = + // DateTime.fromMillisecondsSinceEpoch( + // dayData['time'] is String + // ? int.parse(dayData['time']) + // : dayData['time'], + // ); + // if (dayData['selected'] != null && + // dayData['selected'] == true && + // dayData['state'] != null) { + // stateModule = dayData['state']; + // currentTime = dayData['time']; + // } + // return SleepDateWidget( + // mac: mac, + // time: dayData['time'], + // date: date, + // score: dayData['score']?['socre'] + // ?.toString() ?? + // '', + // comment: dayData['score']?['name'], + // textColor: dayData['score'] + // ?['color'] == + // null + // ? null + // : stringToColor( + // dayData['score']?['color']), + // isSelected: dayData['selected'], + // ); + // }, + // ), + // sleepDataModuleWidgets: stateModule + // .isNotEmpty + // ? List.generate( + // stateModule.length, + // (j) { + // stateModule[j]['onto'] = true; + // stateModule[j]['time'] = + // currentTime; + // stateModule[j]['mac'] = goalMac; + // stateModule[j]['person'] = person; + // return SleepDataModuleWidget( + // data: stateModule[j], + // ); + // }, + // ) + // : [], + // ); + // }, + // ), + // ), + // ), + // ); return Expanded( child: SingleChildScrollView( child: Column( - children: List.generate( - deviceList.length, - (i) { + children: [ + SizedBox(height: 26.rpx), // 第一个上方间距 + ...List.generate(deviceList.length, (i) { String mac = macList[i]; List dailyDataList = reportData[mac]!; @@ -1011,63 +1088,66 @@ class _HomePageState extends State { String currentTime = ""; String goalMac = targetDevice?['mac']; var person = targetDevice?['person']; - return DynamicReportDetailWidget( - key: ValueKey( - '${targetDevice!['mac']}_${homeController.model.type}'), // 添加唯一key - targetDevice: targetDevice!, - sleepDateWidgets: List.generate( - dailyDataList.length, - (j) { - var dayData = dailyDataList[j]; - DateTime date = - DateTime.fromMillisecondsSinceEpoch( - dayData['time'] is String - ? int.parse(dayData['time']) - : dayData['time'], - ); - if (dayData['selected'] != null && - dayData['selected'] == true && - dayData['state'] != null) { - stateModule = dayData['state']; - currentTime = dayData['time']; - } - return SleepDateWidget( - mac: mac, - time: dayData['time'], - date: date, - score: dayData['score']?['socre'] - ?.toString() ?? - '', - comment: dayData['score']?['name'], - textColor: dayData['score'] - ?['color'] == - null - ? null - : stringToColor( - dayData['score']?['color']), - isSelected: dayData['selected'], - ); - }, - ), - sleepDataModuleWidgets: stateModule - .isNotEmpty - ? List.generate( - stateModule.length, - (j) { - stateModule[j]['onto'] = true; - stateModule[j]['time'] = - currentTime; - stateModule[j]['mac'] = goalMac; - stateModule[j]['person'] = person; - return SleepDataModuleWidget( - data: stateModule[j], - ); - }, - ) - : [], + + return Column( + children: [ + DynamicReportDetailWidget( + key: ValueKey( + '${targetDevice!['mac']}_${homeController.model.type}'), + targetDevice: targetDevice!, + sleepDateWidgets: List.generate( + dailyDataList.length, (j) { + var dayData = dailyDataList[j]; + DateTime date = DateTime + .fromMillisecondsSinceEpoch( + dayData['time'] is String + ? int.parse(dayData['time']) + : dayData['time'], + ); + if (dayData['selected'] == true && + dayData['state'] != null) { + stateModule = dayData['state']; + currentTime = dayData['time']; + } + return SleepDateWidget( + mac: mac, + time: dayData['time'], + date: date, + score: dayData['score']?['socre'] + ?.toString() ?? + '', + comment: dayData['score']?['name'], + textColor: dayData['score'] + ?['color'] == + null + ? null + : stringToColor( + dayData['score']?['color']), + isSelected: dayData['selected'], + ); + }), + sleepDataModuleWidgets: stateModule + .isNotEmpty + ? List.generate(stateModule.length, + (j) { + stateModule[j]['onto'] = true; + stateModule[j]['time'] = + currentTime; + stateModule[j]['mac'] = goalMac; + stateModule[j]['person'] = + person; + return SleepDataModuleWidget( + data: stateModule[j]); + }) + : [], + ), + SizedBox( + height: + 26.rpx), // 每个 widget 下方间距(包括最后一个) + ], ); - }, - ), + }), + ], ), ), ); diff --git a/lib/pages/main_bottom/mine_page.dart b/lib/pages/main_bottom/mine_page.dart index 903bd7a..d23da87 100644 --- a/lib/pages/main_bottom/mine_page.dart +++ b/lib/pages/main_bottom/mine_page.dart @@ -629,13 +629,13 @@ class _MinePageState extends State { // textColor: // themeController.currentColor.sc2, // ); - Get.toNamed("/newSleepReportPage", - arguments: { - 'date': DateTime.now() - .millisecondsSinceEpoch, - "mac": 'aaaaaaeeeeeq', - 'type': 1 - }); + // Get.toNamed("/newSleepReportPage", + // arguments: { + // 'date': DateTime.now() + // .millisecondsSinceEpoch, + // "mac": 'aaaaaaeeeeeq', + // 'type': 1 + // }); } }, child: Container( diff --git a/lib/pages/person/person_page.dart b/lib/pages/person/person_page.dart index 73e7a7f..fdacbfd 100644 --- a/lib/pages/person/person_page.dart +++ b/lib/pages/person/person_page.dart @@ -742,6 +742,9 @@ class _EPageState extends State { ), ), ), + SizedBox( + height: 20.rpx, + ), ], ), ), diff --git a/lib/pages/repair/apply_repair_page.dart b/lib/pages/repair/apply_repair_page.dart index 26d5318..bc582df 100644 --- a/lib/pages/repair/apply_repair_page.dart +++ b/lib/pages/repair/apply_repair_page.dart @@ -160,64 +160,65 @@ class _ApplyRepairPageState extends State { mainAxisSize: MainAxisSize.max, children: [ Obx(() { - return Row( - mainAxisSize: MainAxisSize.max, - children: deviceTypeController.deviceTypeList.value - .map( - (deviceType) => CustomCard( - borderRadius: - AppConstants().button_container_radius, - onTap: () async { - repairController.device_type.value = - deviceType['type']; - repairController.repairList - .clear(); // 清空旧数据 - repairController.repairList - .add({}); // 添加新数据 - await bodyDeviceController - .getDeviceList(); // 等待数据加载 - _updateRepairItemKeys(); // 清空后更新 keys - repairController - .updateAll(); // 手动触发更新(如果未自动更新) - }, - colors: deviceType['type'] == - repairController.device_type.value - ? [ - themeController.currentColor.sc1, - themeController.currentColor.sc2, - ] - : [themeController.currentColor.sc5], - child: Container( - width: (MediaQuery.sizeOf(context).width * - 0.284) - .rpx, - constraints: BoxConstraints( - minWidth: 213.rpx, - minHeight: 91.rpx, - ), - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(20.rpx), - ), - child: Align( - alignment: AlignmentDirectional(0, 0), - child: Text( - deviceType[ - 'name'], // 假设 deviceType 有 name 字段 - style: TextStyle( - letterSpacing: 0.0, - color: - themeController.currentColor.sc3, - fontSize: AppConstants() - .normal_text_fontSize, + return SingleChildScrollView( + scrollDirection: Axis.horizontal, // 横向滚动 + child: Row( + mainAxisSize: MainAxisSize.min, // 设置为 min,避免撑满父组件宽度 + children: deviceTypeController.deviceTypeList.value + .map( + (deviceType) => CustomCard( + borderRadius: + AppConstants().button_container_radius, + onTap: () async { + repairController.device_type.value = + deviceType['type']; + repairController.repairList + .clear(); // 清空旧数据 + repairController.repairList + .add({}); // 添加新数据 + await bodyDeviceController + .getDeviceList(); // 等待数据加载 + _updateRepairItemKeys(); // 清空后更新 keys + repairController.updateAll(); // 手动触发更新 + }, + colors: deviceType['type'] == + repairController.device_type.value + ? [ + themeController.currentColor.sc1, + themeController.currentColor.sc2, + ] + : [themeController.currentColor.sc5], + child: Container( + width: (MediaQuery.sizeOf(context).width * + 0.284) + .rpx, + constraints: BoxConstraints( + minWidth: 213.rpx, + minHeight: 91.rpx, + ), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(20.rpx), + ), + child: Align( + alignment: AlignmentDirectional(0, 0), + child: Text( + deviceType['name'], + style: TextStyle( + letterSpacing: 0.0, + color: themeController + .currentColor.sc3, + fontSize: AppConstants() + .normal_text_fontSize, + ), ), ), ), ), - ), - ) - .toList() - .divide(SizedBox(width: 25.rpx)), + ) + .toList() + .divide(SizedBox(width: 25.rpx)), + ), ); }), Obx(() { diff --git a/lib/pages/repair/repair_list_page.dart b/lib/pages/repair/repair_list_page.dart index 1674d93..469c9a9 100644 --- a/lib/pages/repair/repair_list_page.dart +++ b/lib/pages/repair/repair_list_page.dart @@ -102,7 +102,7 @@ class _RepairListPageState extends State { child: Obx(() { final isEmpty = repairController.repairHistory.value.isEmpty; if (isEmpty) { - return Expanded(child: NullDataWidget()); + return NullDataWidget(); } return SingleChildScrollView( child: Column(