更新
This commit is contained in:
@@ -174,5 +174,36 @@
|
|||||||
"注销账号": "注销账号",
|
"注销账号": "注销账号",
|
||||||
"我的智能设备": "我的智能设备",
|
"我的智能设备": "我的智能设备",
|
||||||
"解绑成功": "解绑成功",
|
"解绑成功": "解绑成功",
|
||||||
"解绑失败": "解绑失败"
|
"解绑失败": "解绑失败",
|
||||||
|
"睡眠隐私": "睡眠隐私",
|
||||||
|
"睡眠隐私功能": "睡眠隐私功能",
|
||||||
|
"开始时间": "开始时间",
|
||||||
|
"结束时间": "结束时间",
|
||||||
|
"取消": "取消",
|
||||||
|
"确认": "确认",
|
||||||
|
"时": "时",
|
||||||
|
"分": "分",
|
||||||
|
"选择性别": "选择性别",
|
||||||
|
"*注:开启睡眠隐私功能后,在设置的时间段内,将不会采集您的睡眠数据。": "*注:开启睡眠隐私功能后,在设置时间段内,将不会采集您的睡眠数据。",
|
||||||
|
"柔性唤醒": "柔性唤醒",
|
||||||
|
"睡眠银色": "睡眠隐私",
|
||||||
|
"睡眠习惯": "睡眠习惯",
|
||||||
|
"允许对方查看设备": "允许对方查看设备",
|
||||||
|
"允许对方控制设备": "允许对方控制设备",
|
||||||
|
"已分享用户": "已分享用户",
|
||||||
|
"发送邀请": "发送邀请",
|
||||||
|
"仅允许对方查看该设备": "仅允许对方查看该设备",
|
||||||
|
"允许对方控制该设备": "允许对方控制该设备",
|
||||||
|
"点击复制APP下载链接": "点击复制APP下载链接",
|
||||||
|
"评价": "评价",
|
||||||
|
"我要评价": "我要评价",
|
||||||
|
"更新成功": "更新成功",
|
||||||
|
"更新失败": "更新失败",
|
||||||
|
"完成": "完成",
|
||||||
|
"请输入正确的联系人电话": "请输入正确的联系人电话",
|
||||||
|
"请选择体重": "请输入体重",
|
||||||
|
"请选择身高": "请输入身高",
|
||||||
|
"人员资料": "人员资料",
|
||||||
|
"请输入姓名": "请输入姓名"
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,6 +12,7 @@ MHDeviceShareModel _$MHDeviceShareModelFromJson(Map<String, dynamic> json) =>
|
|||||||
..type = (json['type'] as num?)?.toInt()
|
..type = (json['type'] as num?)?.toInt()
|
||||||
..msg = json['msg'] as String?
|
..msg = json['msg'] as String?
|
||||||
..show = (json['show'] as num?)?.toInt()
|
..show = (json['show'] as num?)?.toInt()
|
||||||
|
..code = (json['code'] as num?)?.toInt()
|
||||||
..limit = (json['limit'] as num).toInt()
|
..limit = (json['limit'] as num).toInt()
|
||||||
..offset = (json['offset'] as num).toInt()
|
..offset = (json['offset'] as num).toInt()
|
||||||
..isLoading = json['isLoading'] as bool
|
..isLoading = json['isLoading'] as bool
|
||||||
@@ -21,10 +22,11 @@ MHDeviceShareModel _$MHDeviceShareModelFromJson(Map<String, dynamic> json) =>
|
|||||||
|
|
||||||
Map<String, dynamic> _$MHDeviceShareModelToJson(MHDeviceShareModel instance) =>
|
Map<String, dynamic> _$MHDeviceShareModelToJson(MHDeviceShareModel instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
'phone': instance.account,
|
'account': instance.account,
|
||||||
'type': instance.type,
|
'type': instance.type,
|
||||||
'msg': instance.msg,
|
'msg': instance.msg,
|
||||||
'show': instance.show,
|
'show': instance.show,
|
||||||
|
'code': instance.code,
|
||||||
'limit': instance.limit,
|
'limit': instance.limit,
|
||||||
'offset': instance.offset,
|
'offset': instance.offset,
|
||||||
'isLoading': instance.isLoading,
|
'isLoading': instance.isLoading,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class RepairListController extends GetControllerEx<RepairListModel> {
|
|||||||
String serviceName = ServiceConstant.server_service;
|
String serviceName = ServiceConstant.server_service;
|
||||||
String serviceApi = ServiceConstant.submit_repair;
|
String serviceApi = ServiceConstant.submit_repair;
|
||||||
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
||||||
requestWithLog(
|
await requestWithLog(
|
||||||
logTitle: "查询报修数据",
|
logTitle: "查询报修数据",
|
||||||
method: MyHttpMethod.get,
|
method: MyHttpMethod.get,
|
||||||
queryUrl: queryUrl,
|
queryUrl: queryUrl,
|
||||||
|
|||||||
@@ -12,9 +12,7 @@ RepairListModel _$RepairListModelFromJson(Map<String, dynamic> json) =>
|
|||||||
..offset = (json['offset'] as num).toInt()
|
..offset = (json['offset'] as num).toInt()
|
||||||
..isLoading = json['isLoading'] as bool
|
..isLoading = json['isLoading'] as bool
|
||||||
..hasMore = json['hasMore'] as bool
|
..hasMore = json['hasMore'] as bool
|
||||||
..repairList = (json['repairList'] as List<dynamic>)
|
..repairList = json['repairList'] as List<dynamic>;
|
||||||
.map((e) => ApplyRepairModel.fromJson(e as Map<String, dynamic>))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
Map<String, dynamic> _$RepairListModelToJson(RepairListModel instance) =>
|
Map<String, dynamic> _$RepairListModelToJson(RepairListModel instance) =>
|
||||||
<String, dynamic>{
|
<String, dynamic>{
|
||||||
|
|||||||
@@ -194,8 +194,6 @@ void initEasyDartModule() {
|
|||||||
//初始化
|
//初始化
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Future<void> initLogin() async {
|
Future<void> initLogin() async {
|
||||||
// 初始化控制器
|
// 初始化控制器
|
||||||
Get.put(UserInfoController());
|
Get.put(UserInfoController());
|
||||||
@@ -358,6 +356,7 @@ class MyApp extends StatelessWidget {
|
|||||||
Get.lazyPut(() => MHTDeviceCalibrationController()),
|
Get.lazyPut(() => MHTDeviceCalibrationController()),
|
||||||
Get.lazyPut(() => SleepReportController()),
|
Get.lazyPut(() => SleepReportController()),
|
||||||
Get.lazyPut(() => CalendarController()),
|
Get.lazyPut(() => CalendarController()),
|
||||||
|
Get.lazyPut(() => UserPdfController()),
|
||||||
Get.put(WebviewTestController()),
|
Get.put(WebviewTestController()),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -714,13 +714,13 @@ Future showDayTimeSelectionDialog(
|
|||||||
width: 100.rpx,
|
width: 100.rpx,
|
||||||
height: 60.rpx,
|
height: 60.rpx,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text("取消",
|
child: Text("取消".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30.rpx, color: Colors.white)),
|
fontSize: 30.rpx, color: Colors.white)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
title,
|
title.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: themeController.currentColor.sc3,
|
color: themeController.currentColor.sc3,
|
||||||
@@ -742,7 +742,7 @@ Future showDayTimeSelectionDialog(
|
|||||||
width: 100.rpx,
|
width: 100.rpx,
|
||||||
height: 60.rpx,
|
height: 60.rpx,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: Text("确认",
|
child: Text("确认".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30.rpx, color: Colors.white)),
|
fontSize: 30.rpx, color: Colors.white)),
|
||||||
),
|
),
|
||||||
@@ -778,7 +778,7 @@ Future showDayTimeSelectionDialog(
|
|||||||
context,
|
context,
|
||||||
hours,
|
hours,
|
||||||
hoursIndex,
|
hoursIndex,
|
||||||
unit: "时",
|
unit: "时".tr,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
@@ -786,7 +786,7 @@ Future showDayTimeSelectionDialog(
|
|||||||
context,
|
context,
|
||||||
minutes,
|
minutes,
|
||||||
minutesIndex,
|
minutesIndex,
|
||||||
unit: "分",
|
unit: "分".tr,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -856,12 +856,12 @@ Future showOneSelectionDialog(
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
width: 100.rpx,
|
width: 100.rpx,
|
||||||
height: 60.rpx,
|
height: 60.rpx,
|
||||||
child: Text("取消",
|
child: Text("取消".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30.rpx, color: Colors.white)),
|
fontSize: 30.rpx, color: Colors.white)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(title,
|
Text(title.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -879,7 +879,7 @@ Future showOneSelectionDialog(
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
width: 100.rpx,
|
width: 100.rpx,
|
||||||
height: 60.rpx,
|
height: 60.rpx,
|
||||||
child: Text("确认",
|
child: Text("确认".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30.rpx, color: Colors.white)),
|
fontSize: 30.rpx, color: Colors.white)),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -17,35 +17,6 @@ class MattressControlPage extends StatefulWidget {
|
|||||||
class _MattressControlPageState extends State<MattressControlPage> {
|
class _MattressControlPageState extends State<MattressControlPage> {
|
||||||
final controller = Get.put(ControlCardController());
|
final controller = Get.put(ControlCardController());
|
||||||
|
|
||||||
final data = {
|
|
||||||
"_id": "333330000000000000000000",
|
|
||||||
"uid": "684b90df767e00004e0072e2",
|
|
||||||
"bind_type": 1,
|
|
||||||
"device_type": 3,
|
|
||||||
"mac": "545024122666",
|
|
||||||
"bind_mac": null,
|
|
||||||
"bind_mac_a": "B43A45C3D411",
|
|
||||||
"bind_mac_b": "B43A45C3D388",
|
|
||||||
"position": 0,
|
|
||||||
"share_uid": null,
|
|
||||||
"person": null,
|
|
||||||
"op_type": null,
|
|
||||||
"show": true,
|
|
||||||
"create_time": 1750121686274,
|
|
||||||
"room_id": "684395bf9ef8601da20f6475",
|
|
||||||
"roomName": "主卧",
|
|
||||||
"shareNum": 0,
|
|
||||||
"status": {
|
|
||||||
"signal": -1,
|
|
||||||
"status": 0,
|
|
||||||
"inBed": 0,
|
|
||||||
"upgrade": 0,
|
|
||||||
"failure": 0,
|
|
||||||
"updateTime": -1
|
|
||||||
},
|
|
||||||
"code": "545024122666",
|
|
||||||
"blueToothStatus": 1
|
|
||||||
};
|
|
||||||
int selectedIndex = 1; // 当前选中的tab索引
|
int selectedIndex = 1; // 当前选中的tab索引
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -78,9 +78,9 @@ class ShareUserWidget extends GetView {
|
|||||||
alignment: const AlignmentDirectional(-1, 0),
|
alignment: const AlignmentDirectional(-1, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
info['opType'] == 1
|
info['opType'] == 1
|
||||||
? '允许对方控制该设备'
|
? '允许对方控制该设备'.tr
|
||||||
: info['opType'] == 2
|
: info['opType'] == 2
|
||||||
? '仅允许对方查看该设备'
|
? '仅允许对方查看该设备'.tr
|
||||||
: '',
|
: '',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
|
|||||||
128
lib/pages/mh_page/about_us.dart
Normal file
128
lib/pages/mh_page/about_us.dart
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
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/component/tool/WebViewWidget.dart';
|
||||||
|
|
||||||
|
class MhAboutUsPage extends StatefulWidget {
|
||||||
|
late MyWebView webView;
|
||||||
|
MhAboutUsPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<MhAboutUsPage> createState() => _MhAboutUsPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MhAboutUsPageState extends State<MhAboutUsPage> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
// pdfController.loadPdf();
|
||||||
|
|
||||||
|
widget.webView = MyWebView(
|
||||||
|
url: AppConstants().ent_type == 1
|
||||||
|
? "https://mp.weixin.qq.com/s/IAr4RNBy0hGJXGKyMxe7eQ"
|
||||||
|
: "https://mp.weixin.qq.com/s/7BvvprVDqX1eOzM3Lms8dg",
|
||||||
|
onLoad: () {
|
||||||
|
print('网页载入完毕');
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return LayoutBuilder(
|
||||||
|
builder: (context, bodySize) => GestureDetector(
|
||||||
|
onTap: () => FocusScope.of(context).unfocus(),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
image: AssetImage('assets/images/new_background.png'), // 本地图片
|
||||||
|
fit: BoxFit.fill, // 填满整个 Container
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Scaffold(
|
||||||
|
backgroundColor: Colors.transparent, // 加上这一行
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
// backgroundColor: Colors.transparent,
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
iconTheme: IconThemeData(color: themeController.currentColor.sc3),
|
||||||
|
titleSpacing: 0,
|
||||||
|
// leading: returnIconButtom,
|
||||||
|
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,
|
||||||
|
)),
|
||||||
|
|
||||||
|
/// 左边返回按钮
|
||||||
|
Positioned(
|
||||||
|
left: 20,
|
||||||
|
child: returnIconButtomNew,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
actions: [],
|
||||||
|
centerTitle: false,
|
||||||
|
),
|
||||||
|
|
||||||
|
// body: SafeArea(
|
||||||
|
// top: true,
|
||||||
|
// child: Padding(
|
||||||
|
// padding: EdgeInsets.symmetric(horizontal: 30.rpx),
|
||||||
|
// child: Column(
|
||||||
|
// children: [
|
||||||
|
// Expanded(
|
||||||
|
// child: Obx(() {
|
||||||
|
// if (pdfController.localPdfPath.value == null) {
|
||||||
|
// return Center(child: CircularProgressIndicator());
|
||||||
|
// } else {
|
||||||
|
// return PDFView(
|
||||||
|
// filePath: pdfController.localPdfPath.value!,
|
||||||
|
// autoSpacing: false,
|
||||||
|
// enableSwipe: true,
|
||||||
|
// swipeHorizontal: false,
|
||||||
|
// pageSnap: true,
|
||||||
|
// fitEachPage: true,
|
||||||
|
// defaultPage: 0,
|
||||||
|
// onRender: (pages) => print('PDF 渲染完成,共 $pages 页'),
|
||||||
|
// onError: (error) => print('PDF 加载错误: $error'),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
body: SafeArea(
|
||||||
|
top: true,
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 0.rpx),
|
||||||
|
child: Column(children: [
|
||||||
|
Expanded(
|
||||||
|
child: Container(
|
||||||
|
child: widget.webView,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,37 +71,76 @@ class AddressListPage extends GetView<AddressListController> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
|
// Obx(() {
|
||||||
|
// if (controller.model.addressList!.isEmpty) {
|
||||||
|
// // 如果地址列表为空,显示 EmptyMessageWidget
|
||||||
|
// return Expanded(child: NullDataWidget());
|
||||||
|
// } else {
|
||||||
|
// // 如果地址列表不为空,显示地址列表
|
||||||
|
// return Expanded(
|
||||||
|
// child: Container(
|
||||||
|
// width: bodysize!.maxWidth,
|
||||||
|
// height: bodysize!.maxHeight * 1,
|
||||||
|
// decoration: BoxDecoration(),
|
||||||
|
// child: Obx(() => ListView(
|
||||||
|
// shrinkWrap: true,
|
||||||
|
// scrollDirection: Axis.vertical,
|
||||||
|
// children: (controller.model.addressList!
|
||||||
|
// .asMap()
|
||||||
|
// .entries
|
||||||
|
// .map((e) => AddressModuleWidget(
|
||||||
|
// index: e.key,
|
||||||
|
// addressListController:
|
||||||
|
// controller,
|
||||||
|
// ))
|
||||||
|
// .toList() as List<Widget>)
|
||||||
|
// .divide(const SizedBox(height: 10))
|
||||||
|
// .addToEnd(const SizedBox(
|
||||||
|
// height:
|
||||||
|
// AppConstants.list_end_height)),
|
||||||
|
// )),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.model.addressList!.isEmpty) {
|
final originList = controller.model.addressList ?? [];
|
||||||
// 如果地址列表为空,显示 EmptyMessageWidget
|
|
||||||
return Expanded(child: NullDataWidget());
|
// 拆出默认地址
|
||||||
} else {
|
final defaultItem = originList.firstWhere(
|
||||||
// 如果地址列表不为空,显示地址列表
|
(e) => e["default"] == 1,
|
||||||
|
orElse: () => null,
|
||||||
|
);
|
||||||
|
|
||||||
|
// 其他非默认地址
|
||||||
|
final others =
|
||||||
|
originList.where((e) => e["default"] != 1).toList();
|
||||||
|
|
||||||
|
// 新的展示顺序列表(默认地址排前面)
|
||||||
|
final reorderedList = [
|
||||||
|
if (defaultItem != null) defaultItem,
|
||||||
|
...others,
|
||||||
|
];
|
||||||
|
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: Container(
|
child: ListView(
|
||||||
width: bodysize!.maxWidth,
|
|
||||||
height: bodysize!.maxHeight * 1,
|
|
||||||
decoration: BoxDecoration(),
|
|
||||||
child: Obx(() => ListView(
|
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
scrollDirection: Axis.vertical,
|
padding: EdgeInsets.zero,
|
||||||
children: (controller.model.addressList!
|
children: reorderedList
|
||||||
.asMap()
|
.map((item) {
|
||||||
.entries
|
final realIndex =
|
||||||
.map((e) => AddressModuleWidget(
|
originList.indexOf(item); // 保留原始 index
|
||||||
index: e.key,
|
return AddressModuleWidget(
|
||||||
addressListController:
|
index: realIndex,
|
||||||
controller,
|
addressListController: controller,
|
||||||
))
|
);
|
||||||
.toList() as List<Widget>)
|
})
|
||||||
|
.toList()
|
||||||
.divide(const SizedBox(height: 10))
|
.divide(const SizedBox(height: 10))
|
||||||
.addToEnd(const SizedBox(
|
.addToEnd(const SizedBox(
|
||||||
height:
|
height: AppConstants.list_end_height)),
|
||||||
AppConstants.list_end_height)),
|
|
||||||
)),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
Align(
|
Align(
|
||||||
alignment: AlignmentDirectional(0, 1),
|
alignment: AlignmentDirectional(0, 1),
|
||||||
|
|||||||
@@ -1168,90 +1168,100 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
|||||||
child:
|
child:
|
||||||
TextFormField(
|
TextFormField(
|
||||||
// autofocus: true,
|
// autofocus: true,
|
||||||
|
obscureText:
|
||||||
|
false,
|
||||||
onChanged:
|
onChanged:
|
||||||
(value) {
|
(val) {
|
||||||
controller
|
controller
|
||||||
.model
|
.model
|
||||||
.apply_name =
|
.apply_name =
|
||||||
value;
|
val;
|
||||||
},
|
},
|
||||||
obscureText:
|
|
||||||
false,
|
|
||||||
decoration:
|
decoration:
|
||||||
InputDecoration(
|
InputDecoration(
|
||||||
isDense: true,
|
contentPadding:
|
||||||
|
EdgeInsets
|
||||||
|
.symmetric(
|
||||||
|
vertical:
|
||||||
|
25.rpx,
|
||||||
|
horizontal:
|
||||||
|
26.rpx,
|
||||||
|
),
|
||||||
labelStyle:
|
labelStyle:
|
||||||
const TextStyle(
|
TextStyle(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
hintStyle:
|
hintStyle:
|
||||||
const TextStyle(
|
TextStyle(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
enabledBorder:
|
enabledBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
color: const Color(
|
color: Color(
|
||||||
0x00000000),
|
0x00000000),
|
||||||
width:
|
width: 2,
|
||||||
1.rpx,
|
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
AppConstants().normal_container_radius),
|
.circular(8),
|
||||||
),
|
),
|
||||||
focusedBorder:
|
focusedBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
color: Colors
|
color: Color(
|
||||||
.transparent,
|
0x00000000),
|
||||||
width:
|
width: 2,
|
||||||
1.rpx,
|
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
errorBorder:
|
errorBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
//
|
color: Color(
|
||||||
width:
|
0x00000000),
|
||||||
1.rpx,
|
width: 2,
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
focusedErrorBorder:
|
focusedErrorBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
//
|
color: Color(
|
||||||
width:
|
0x00000000),
|
||||||
1.rpx,
|
width: 2,
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style:
|
||||||
|
TextStyle(
|
||||||
|
fontFamily:
|
||||||
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
color: Colors
|
color: Colors
|
||||||
.black,
|
.black,
|
||||||
fontSize:
|
fontSize:
|
||||||
26.rpx),
|
26.rpx,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -1324,90 +1334,100 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
|
|||||||
child:
|
child:
|
||||||
TextFormField(
|
TextFormField(
|
||||||
// autofocus: true,
|
// autofocus: true,
|
||||||
|
obscureText:
|
||||||
|
false,
|
||||||
onChanged:
|
onChanged:
|
||||||
(value) {
|
(val) {
|
||||||
controller
|
controller
|
||||||
.model
|
.model
|
||||||
.tel =
|
.tel =
|
||||||
value;
|
val;
|
||||||
},
|
},
|
||||||
obscureText:
|
|
||||||
false,
|
|
||||||
decoration:
|
decoration:
|
||||||
InputDecoration(
|
InputDecoration(
|
||||||
isDense: true,
|
contentPadding:
|
||||||
|
EdgeInsets
|
||||||
|
.symmetric(
|
||||||
|
vertical:
|
||||||
|
25.rpx,
|
||||||
|
horizontal:
|
||||||
|
26.rpx,
|
||||||
|
),
|
||||||
labelStyle:
|
labelStyle:
|
||||||
const TextStyle(
|
TextStyle(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
hintStyle:
|
hintStyle:
|
||||||
const TextStyle(
|
TextStyle(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
enabledBorder:
|
enabledBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
color: const Color(
|
color: Color(
|
||||||
0x00000000),
|
0x00000000),
|
||||||
width:
|
width: 2,
|
||||||
1.rpx,
|
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
AppConstants().normal_container_radius),
|
.circular(8),
|
||||||
),
|
),
|
||||||
focusedBorder:
|
focusedBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
color: Colors
|
color: Color(
|
||||||
.transparent,
|
0x00000000),
|
||||||
width:
|
width: 2,
|
||||||
1.rpx,
|
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
errorBorder:
|
errorBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
//
|
color: Color(
|
||||||
width:
|
0x00000000),
|
||||||
1.rpx,
|
width: 2,
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
focusedErrorBorder:
|
focusedErrorBorder:
|
||||||
OutlineInputBorder(
|
UnderlineInputBorder(
|
||||||
borderSide:
|
borderSide:
|
||||||
BorderSide(
|
const BorderSide(
|
||||||
//
|
color: Color(
|
||||||
width:
|
0x00000000),
|
||||||
1.rpx,
|
width: 2,
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(
|
BorderRadius
|
||||||
8.rpx),
|
.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style:
|
||||||
|
TextStyle(
|
||||||
|
fontFamily:
|
||||||
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
color: Colors
|
color: Colors
|
||||||
.black,
|
.black,
|
||||||
fontSize:
|
fontSize:
|
||||||
26.rpx),
|
26.rpx,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -4,16 +4,13 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
import 'package:vbvs_app/common/color/appConstants.dart';
|
import 'package:vbvs_app/common/color/appConstants.dart';
|
||||||
import 'package:vbvs_app/common/color/app_uri_status.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/FitTool.dart';
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
||||||
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
||||||
import 'package:vbvs_app/component/tool/TopSlideNotification.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/mhdevice_share_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/mhdevice_share_controller.dart';
|
||||||
import 'package:vbvs_app/model/api_response.dart';
|
import 'package:vbvs_app/model/api_response.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/EmptyMessageWidget.dart';
|
|
||||||
import 'package:vbvs_app/pages/mh_page/ShareUserWidget.dart';
|
import 'package:vbvs_app/pages/mh_page/ShareUserWidget.dart';
|
||||||
|
|
||||||
class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
||||||
@@ -216,8 +213,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
Obx(
|
GestureDetector(
|
||||||
() => GestureDetector(
|
|
||||||
onTap: () {
|
onTap: () {
|
||||||
// 当点击时,将 type 设置为 0(允许控制)
|
// 当点击时,将 type 设置为 0(允许控制)
|
||||||
controller.model.type = 1;
|
controller.model.type = 1;
|
||||||
@@ -230,8 +226,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
minHeight: 46,
|
minHeight: 46,
|
||||||
),
|
),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius:
|
borderRadius: BorderRadius.circular(0),
|
||||||
BorderRadius.circular(0),
|
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
@@ -239,7 +234,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'允许对方控制该设备',
|
'允许对方控制该设备'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -247,50 +242,190 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
letterSpacing: 0.0,
|
letterSpacing: 0.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Theme(
|
Obx(() {
|
||||||
data:
|
double h = 33.rpx;
|
||||||
Theme.of(context).copyWith(
|
bool check =
|
||||||
unselectedWidgetColor: Color(
|
controller.model.type == 1;
|
||||||
0xFFC8CBD2), // 改变未选中状态边框颜色
|
|
||||||
|
return Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
child: AspectRatio(
|
||||||
|
aspectRatio: 1,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
height: h,
|
||||||
|
width: h,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(
|
||||||
|
h / 2),
|
||||||
|
border: Border.all(
|
||||||
|
width: check ? 1 : 0.5,
|
||||||
|
color:
|
||||||
|
Color(0xFFC8CBD2),
|
||||||
),
|
),
|
||||||
child: Radio<int>(
|
),
|
||||||
value: 1,
|
child: check
|
||||||
groupValue:
|
? Center(
|
||||||
controller.model.type,
|
child: ClipOval(
|
||||||
onChanged: (value) {
|
child: Container(
|
||||||
controller.model.type =
|
width: h * 0.6,
|
||||||
value!;
|
height: h * 0.6,
|
||||||
controller.updateAll();
|
color: const Color(
|
||||||
},
|
0xFF6BFDAC),
|
||||||
activeColor:
|
),
|
||||||
const Color(0xFF6BFDAC),
|
),
|
||||||
materialTapTargetSize:
|
)
|
||||||
MaterialTapTargetSize
|
: null,
|
||||||
.shrinkWrap, // 减少内边距
|
),
|
||||||
visualDensity: VisualDensity(
|
),
|
||||||
horizontal: -4,
|
),
|
||||||
vertical: -4), // 缩小视觉密度
|
);
|
||||||
))
|
}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Obx(
|
// Obx(
|
||||||
() => GestureDetector(
|
// () => GestureDetector(
|
||||||
|
// onTap: () {
|
||||||
|
// controller.model.type = 2;
|
||||||
|
// controller.updateAll();
|
||||||
|
// },
|
||||||
|
// child: Container(
|
||||||
|
// width: MediaQuery.sizeOf(context).width,
|
||||||
|
// constraints: const BoxConstraints(
|
||||||
|
// minHeight: 46,
|
||||||
|
// ),
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(0),
|
||||||
|
// ),
|
||||||
|
// child: Row(
|
||||||
|
// mainAxisSize: MainAxisSize.max,
|
||||||
|
// mainAxisAlignment:
|
||||||
|
// MainAxisAlignment.spaceBetween,
|
||||||
|
// children: [
|
||||||
|
// Text(
|
||||||
|
// '仅允许对方查看该设备'.tr,
|
||||||
|
// style: TextStyle(
|
||||||
|
// fontFamily: 'Readex Pro',
|
||||||
|
// color: Colors.white,
|
||||||
|
// fontSize: 26.rpx,
|
||||||
|
// letterSpacing: 0.0,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// // Theme(
|
||||||
|
// // data:
|
||||||
|
// // Theme.of(context).copyWith(
|
||||||
|
// // unselectedWidgetColor: Color(
|
||||||
|
// // 0xFFC8CBD2), // 改变未选中状态边框颜色
|
||||||
|
// // ),
|
||||||
|
// // child: Radio<int>(
|
||||||
|
// // value: 2,
|
||||||
|
// // groupValue:
|
||||||
|
// // controller.model.type,
|
||||||
|
// // onChanged: (value) {
|
||||||
|
// // controller.model.type =
|
||||||
|
// // value!;
|
||||||
|
// // controller.updateAll();
|
||||||
|
// // },
|
||||||
|
// // activeColor:
|
||||||
|
// // const Color(0xFF6BFDAC),
|
||||||
|
// // materialTapTargetSize:
|
||||||
|
// // MaterialTapTargetSize
|
||||||
|
// // .shrinkWrap, // 减少内边距
|
||||||
|
// // visualDensity: VisualDensity(
|
||||||
|
// // horizontal: -4,
|
||||||
|
// // vertical: -4), // 缩小视觉密度
|
||||||
|
// // ))
|
||||||
|
// ClipOval(
|
||||||
|
// child: Container(
|
||||||
|
// height:
|
||||||
|
// MediaQuery.sizeOf(context)
|
||||||
|
// .height *
|
||||||
|
// 0.0449,
|
||||||
|
// child: AspectRatio(
|
||||||
|
// aspectRatio: 1,
|
||||||
|
// child: Center(
|
||||||
|
// child: LayoutBuilder(
|
||||||
|
// builder: (context,
|
||||||
|
// constraints) {
|
||||||
|
// double h =
|
||||||
|
// MediaQuery.sizeOf(
|
||||||
|
// context)
|
||||||
|
// .height *
|
||||||
|
// 0.0326;
|
||||||
|
// bool check = controller
|
||||||
|
// .model.type ==
|
||||||
|
// 2;
|
||||||
|
// if (check) {
|
||||||
|
// return Container(
|
||||||
|
// height: h,
|
||||||
|
// width: h,
|
||||||
|
// decoration:
|
||||||
|
// BoxDecoration(
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius
|
||||||
|
// .circular(
|
||||||
|
// h / 2),
|
||||||
|
// border: Border.all(
|
||||||
|
// width: 1,
|
||||||
|
// color: Color(
|
||||||
|
// 0xFF6BFDAC)),
|
||||||
|
// ),
|
||||||
|
// child: Center(
|
||||||
|
// child: ClipOval(
|
||||||
|
// child: Container(
|
||||||
|
// width:
|
||||||
|
// h * 0.6,
|
||||||
|
// height:
|
||||||
|
// h * 0.6,
|
||||||
|
// color: Color(
|
||||||
|
// 0xFF6BFDAC)),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// } else {
|
||||||
|
// return Container(
|
||||||
|
// height: h,
|
||||||
|
// width: h,
|
||||||
|
// decoration:
|
||||||
|
// BoxDecoration(
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius
|
||||||
|
// .circular(
|
||||||
|
// h / 2),
|
||||||
|
// border: Border.all(
|
||||||
|
// width: 0.5,
|
||||||
|
// color: Colors
|
||||||
|
// .white),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
// 当点击时,将 type 设置为 1(仅允许查看)
|
|
||||||
controller.model.type = 2;
|
controller.model.type = 2;
|
||||||
controller.updateAll();
|
controller.updateAll();
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
constraints: const BoxConstraints(
|
constraints:
|
||||||
minHeight: 46,
|
const BoxConstraints(minHeight: 46),
|
||||||
),
|
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius:
|
borderRadius: BorderRadius.circular(0),
|
||||||
BorderRadius.circular(0),
|
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
@@ -298,7 +433,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'仅允许对方查看该设备',
|
'仅允许对方查看该设备'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -306,35 +441,52 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
letterSpacing: 0.0,
|
letterSpacing: 0.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Theme(
|
// ✅ 只包住响应式控件部分
|
||||||
data:
|
Obx(() {
|
||||||
Theme.of(context).copyWith(
|
double h = 33.rpx;
|
||||||
unselectedWidgetColor: Color(
|
bool check =
|
||||||
0xFFC8CBD2), // 改变未选中状态边框颜色
|
controller.model.type == 2;
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
height: 33.rpx,
|
||||||
|
child: AspectRatio(
|
||||||
|
aspectRatio: 1,
|
||||||
|
child: Center(
|
||||||
|
child: Container(
|
||||||
|
height: h,
|
||||||
|
width: h,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(
|
||||||
|
h / 2),
|
||||||
|
border: Border.all(
|
||||||
|
width: check ? 1 : 0.5,
|
||||||
|
color:
|
||||||
|
Color(0xFFC8CBD2),
|
||||||
),
|
),
|
||||||
child: Radio<int>(
|
),
|
||||||
value: 2,
|
child: check
|
||||||
groupValue:
|
? Center(
|
||||||
controller.model.type,
|
child: ClipOval(
|
||||||
onChanged: (value) {
|
child: Container(
|
||||||
controller.model.type =
|
width: h * 0.6,
|
||||||
value!;
|
height: h * 0.6,
|
||||||
controller.updateAll();
|
color: const Color(
|
||||||
},
|
0xFF6BFDAC),
|
||||||
activeColor:
|
),
|
||||||
const Color(0xFF6BFDAC),
|
),
|
||||||
materialTapTargetSize:
|
)
|
||||||
MaterialTapTargetSize
|
: null,
|
||||||
.shrinkWrap, // 减少内边距
|
),
|
||||||
visualDensity: VisualDensity(
|
),
|
||||||
horizontal: -4,
|
),
|
||||||
vertical: -4), // 缩小视觉密度
|
);
|
||||||
))
|
}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Align(
|
Align(
|
||||||
alignment: const AlignmentDirectional(0, 0),
|
alignment: const AlignmentDirectional(0, 0),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@@ -361,7 +513,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
.currentColor.sc9);
|
.currentColor.sc9);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
text: '发送邀请',
|
text: '发送邀请'.tr,
|
||||||
options: FFButtonOptions(
|
options: FFButtonOptions(
|
||||||
height: 60.rpx,
|
height: 60.rpx,
|
||||||
padding:
|
padding:
|
||||||
@@ -404,7 +556,7 @@ class ShareDeviceWidget extends GetView<MHDeviceShareController> {
|
|||||||
padding: const EdgeInsetsDirectional
|
padding: const EdgeInsetsDirectional
|
||||||
.fromSTEB(14, 0, 0, 16),
|
.fromSTEB(14, 0, 0, 16),
|
||||||
child: Text(
|
child: Text(
|
||||||
'已分享用户',
|
'已分享用户'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:ef/ef.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_city_picker/listener/picker_listener.dart';
|
import 'package:flutter_city_picker/listener/picker_listener.dart';
|
||||||
import 'package:flutter_city_picker/model/address.dart';
|
import 'package:flutter_city_picker/model/address.dart';
|
||||||
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
|
|
||||||
import 'package:vbvs_app/common/color/appConstants.dart';
|
import 'package:vbvs_app/common/color/appConstants.dart';
|
||||||
@@ -739,6 +740,158 @@ class EditAddressPage extends GetView<AddressController>
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
// Expanded(
|
||||||
|
// child: InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// CityPicker.show(
|
||||||
|
// context:
|
||||||
|
// context,
|
||||||
|
// cityPickerListener:
|
||||||
|
// this,
|
||||||
|
// // 在大屏/Web 上最大宽度为 600px
|
||||||
|
// // 移除内边距
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// child: Container(
|
||||||
|
// width: 100,
|
||||||
|
// height: 100,
|
||||||
|
// decoration:
|
||||||
|
// BoxDecoration(
|
||||||
|
// color: const Color(
|
||||||
|
// 0xFFF3F5F6),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius
|
||||||
|
// .circular(
|
||||||
|
// 8),
|
||||||
|
// ),
|
||||||
|
// alignment:
|
||||||
|
// Alignment
|
||||||
|
// .center,
|
||||||
|
// child: Obx(() {
|
||||||
|
// return TextFormField(
|
||||||
|
// enabled:
|
||||||
|
// false,
|
||||||
|
// controller: controller.onReDraw(
|
||||||
|
// TextEditingController(
|
||||||
|
// text:
|
||||||
|
// controller.model.all_address),
|
||||||
|
// (val) {
|
||||||
|
// val.text =
|
||||||
|
// controller.model.all_address ??
|
||||||
|
// "";
|
||||||
|
// }),
|
||||||
|
// // autofocus: true,
|
||||||
|
// obscureText:
|
||||||
|
// false,
|
||||||
|
// maxLines: 1,
|
||||||
|
// textAlignVertical:
|
||||||
|
// TextAlignVertical
|
||||||
|
// .center, // 垂直居中
|
||||||
|
// decoration: InputDecoration(
|
||||||
|
// contentPadding: EdgeInsets.symmetric(
|
||||||
|
// vertical:
|
||||||
|
// 25.rpx,
|
||||||
|
// horizontal:
|
||||||
|
// 26.rpx,
|
||||||
|
// ),
|
||||||
|
// labelStyle: TextStyle(
|
||||||
|
// fontFamily:
|
||||||
|
// 'Readex Pro',
|
||||||
|
// letterSpacing:
|
||||||
|
// 0,
|
||||||
|
// ),
|
||||||
|
// hintStyle: TextStyle(
|
||||||
|
// fontFamily:
|
||||||
|
// 'Readex Pro',
|
||||||
|
// letterSpacing:
|
||||||
|
// 0,
|
||||||
|
// ),
|
||||||
|
// enabledBorder: UnderlineInputBorder(
|
||||||
|
// borderSide:
|
||||||
|
// const BorderSide(
|
||||||
|
// color:
|
||||||
|
// Color(0x00000000),
|
||||||
|
// width:
|
||||||
|
// 2,
|
||||||
|
// ),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// disabledBorder: UnderlineInputBorder(
|
||||||
|
// borderSide:
|
||||||
|
// const BorderSide(
|
||||||
|
// color:
|
||||||
|
// Color(0x00000000),
|
||||||
|
// width:
|
||||||
|
// 0,
|
||||||
|
// ),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// focusedBorder: UnderlineInputBorder(
|
||||||
|
// borderSide:
|
||||||
|
// const BorderSide(
|
||||||
|
// color:
|
||||||
|
// Color(0x00000000),
|
||||||
|
// width:
|
||||||
|
// 2,
|
||||||
|
// ),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// errorBorder: UnderlineInputBorder(
|
||||||
|
// borderSide:
|
||||||
|
// const BorderSide(
|
||||||
|
// color:
|
||||||
|
// Color(0x00000000),
|
||||||
|
// width:
|
||||||
|
// 2,
|
||||||
|
// ),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// focusedErrorBorder: UnderlineInputBorder(
|
||||||
|
// borderSide:
|
||||||
|
// const BorderSide(
|
||||||
|
// color:
|
||||||
|
// Color(0x00000000),
|
||||||
|
// width:
|
||||||
|
// 2,
|
||||||
|
// ),
|
||||||
|
// borderRadius:
|
||||||
|
// BorderRadius.circular(8),
|
||||||
|
// ),
|
||||||
|
// suffixIcon: Transform.rotate(
|
||||||
|
// angle:
|
||||||
|
// 1.5708, // 90 度相当于 pi / 2 弧度
|
||||||
|
// child:
|
||||||
|
// Icon(
|
||||||
|
// Icons.arrow_forward_ios,
|
||||||
|
// color:
|
||||||
|
// Colors.black,
|
||||||
|
// size:
|
||||||
|
// 26.rpx,
|
||||||
|
// ),
|
||||||
|
// )),
|
||||||
|
// style:
|
||||||
|
// TextStyle(
|
||||||
|
// fontFamily:
|
||||||
|
// 'Readex Pro',
|
||||||
|
// letterSpacing:
|
||||||
|
// 0,
|
||||||
|
// color: Color(
|
||||||
|
// 0xFF333333),
|
||||||
|
// fontSize:
|
||||||
|
// 26.rpx,
|
||||||
|
// overflow:
|
||||||
|
// TextOverflow
|
||||||
|
// .ellipsis,
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// })),
|
||||||
|
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
@@ -747,8 +900,6 @@ class EditAddressPage extends GetView<AddressController>
|
|||||||
context,
|
context,
|
||||||
cityPickerListener:
|
cityPickerListener:
|
||||||
this,
|
this,
|
||||||
// 在大屏/Web 上最大宽度为 600px
|
|
||||||
// 移除内边距
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
@@ -767,128 +918,53 @@ class EditAddressPage extends GetView<AddressController>
|
|||||||
Alignment
|
Alignment
|
||||||
.center,
|
.center,
|
||||||
child: Obx(() {
|
child: Obx(() {
|
||||||
return TextFormField(
|
return Row(
|
||||||
enabled:
|
children: [
|
||||||
false,
|
Expanded(
|
||||||
controller: controller.onReDraw(
|
|
||||||
TextEditingController(
|
|
||||||
text:
|
|
||||||
controller.model.all_address),
|
|
||||||
(val) {
|
|
||||||
val.text =
|
|
||||||
controller.model.all_address ??
|
|
||||||
"";
|
|
||||||
}),
|
|
||||||
// autofocus: true,
|
|
||||||
obscureText:
|
|
||||||
false,
|
|
||||||
textAlignVertical:
|
|
||||||
TextAlignVertical
|
|
||||||
.center, // 垂直居中
|
|
||||||
decoration: InputDecoration(
|
|
||||||
contentPadding: EdgeInsets.symmetric(
|
|
||||||
vertical:
|
|
||||||
25.rpx,
|
|
||||||
horizontal:
|
|
||||||
26.rpx,
|
|
||||||
),
|
|
||||||
labelStyle: TextStyle(
|
|
||||||
fontFamily:
|
|
||||||
'Readex Pro',
|
|
||||||
letterSpacing:
|
|
||||||
0,
|
|
||||||
),
|
|
||||||
hintStyle: TextStyle(
|
|
||||||
fontFamily:
|
|
||||||
'Readex Pro',
|
|
||||||
letterSpacing:
|
|
||||||
0,
|
|
||||||
),
|
|
||||||
enabledBorder: UnderlineInputBorder(
|
|
||||||
borderSide:
|
|
||||||
const BorderSide(
|
|
||||||
color:
|
|
||||||
Color(0x00000000),
|
|
||||||
width:
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
disabledBorder: UnderlineInputBorder(
|
|
||||||
borderSide:
|
|
||||||
const BorderSide(
|
|
||||||
color:
|
|
||||||
Color(0x00000000),
|
|
||||||
width:
|
|
||||||
0,
|
|
||||||
),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
focusedBorder: UnderlineInputBorder(
|
|
||||||
borderSide:
|
|
||||||
const BorderSide(
|
|
||||||
color:
|
|
||||||
Color(0x00000000),
|
|
||||||
width:
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
errorBorder: UnderlineInputBorder(
|
|
||||||
borderSide:
|
|
||||||
const BorderSide(
|
|
||||||
color:
|
|
||||||
Color(0x00000000),
|
|
||||||
width:
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
focusedErrorBorder: UnderlineInputBorder(
|
|
||||||
borderSide:
|
|
||||||
const BorderSide(
|
|
||||||
color:
|
|
||||||
Color(0x00000000),
|
|
||||||
width:
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
borderRadius:
|
|
||||||
BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
suffixIcon: Transform.rotate(
|
|
||||||
angle:
|
|
||||||
1.5708, // 90 度相当于 pi / 2 弧度
|
|
||||||
child:
|
child:
|
||||||
Icon(
|
Padding(
|
||||||
Icons.arrow_forward_ios,
|
padding: EdgeInsets.only(
|
||||||
color:
|
left: 27
|
||||||
Colors.black,
|
.rpx,
|
||||||
size:
|
right:
|
||||||
26.rpx,
|
10.rpx),
|
||||||
),
|
child:
|
||||||
)),
|
Text(
|
||||||
|
controller.model.all_address ??
|
||||||
|
'',
|
||||||
|
maxLines:
|
||||||
|
1,
|
||||||
|
overflow:
|
||||||
|
TextOverflow.ellipsis,
|
||||||
style:
|
style:
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontFamily:
|
fontFamily:
|
||||||
'Readex Pro',
|
'Readex Pro',
|
||||||
letterSpacing:
|
letterSpacing:
|
||||||
0,
|
0,
|
||||||
color: Color(
|
color:
|
||||||
0xFF333333),
|
Color(0xFF333333),
|
||||||
fontSize:
|
fontSize:
|
||||||
26.rpx,
|
26.rpx,
|
||||||
overflow:
|
|
||||||
TextOverflow
|
|
||||||
.ellipsis,
|
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(right: 27.rpx),
|
||||||
|
child: Container(
|
||||||
|
height: 30.rpx,
|
||||||
|
width: 30.rpx,
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
'assets/img/icon/expand_more.svg',
|
||||||
|
color: Colors.black,
|
||||||
|
)))
|
||||||
|
],
|
||||||
);
|
);
|
||||||
})),
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
)
|
||||||
].divide(const SizedBox(
|
].divide(const SizedBox(
|
||||||
width: 15)),
|
width: 15)),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:vbvs_app/common/util/MyUtils.dart';
|
|||||||
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
||||||
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
||||||
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
import 'package:vbvs_app/controller/mh_controller/device_list_controller.dart';
|
||||||
|
|
||||||
class EditBedPage extends StatefulWidget {
|
class EditBedPage extends StatefulWidget {
|
||||||
final Map data;
|
final Map data;
|
||||||
@@ -19,6 +20,7 @@ BoxConstraints? bodysize;
|
|||||||
class _EditBedPageState extends State<EditBedPage> {
|
class _EditBedPageState extends State<EditBedPage> {
|
||||||
late Map<String, dynamic> editedData;
|
late Map<String, dynamic> editedData;
|
||||||
late TextEditingController _nameController; //名称文本输入框
|
late TextEditingController _nameController; //名称文本输入框
|
||||||
|
DeviceListController deviceListController = Get.find();
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@@ -205,6 +207,7 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
onSuccess: (res) {
|
onSuccess: (res) {
|
||||||
TopSlideNotification.show(context,
|
TopSlideNotification.show(context,
|
||||||
text: "修改名称成功".tr);
|
text: "修改名称成功".tr);
|
||||||
|
deviceListController.getDeviceList();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -222,7 +225,7 @@ class _EditBedPageState extends State<EditBedPage> {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
child: Text("完成",
|
child: Text("完成".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: const Color(0xFF003058),
|
color: const Color(0xFF003058),
|
||||||
fontSize: 26.rpx)),
|
fontSize: 26.rpx)),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import 'package:vbvs_app/common/util/FitTool.dart';
|
|||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
||||||
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
import 'package:vbvs_app/controller/mh_controller/experience_store_list_page.dart';
|
import 'package:vbvs_app/controller/mh_controller/experience_store_list_page.dart';
|
||||||
import 'package:vbvs_app/controller/weather/weather_controller.dart';
|
import 'package:vbvs_app/controller/weather/weather_controller.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/Empty.dart';
|
import 'package:vbvs_app/pages/mh_page/Empty.dart';
|
||||||
@@ -104,7 +105,9 @@ class _ExperienceStorePageState extends State<ExperienceStorePage> {
|
|||||||
highlightColor: Color(0xFF055466),
|
highlightColor: Color(0xFF055466),
|
||||||
padding: EdgeInsets.only(left: 0),
|
padding: EdgeInsets.only(left: 0),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed("/myExperiencePage");
|
TopSlideNotification.show(context,
|
||||||
|
text: "待开发功能".tr);
|
||||||
|
// Get.toNamed("/myExperiencePage");
|
||||||
},
|
},
|
||||||
child: SvgPicture.asset(
|
child: SvgPicture.asset(
|
||||||
'assets/img/icon/history_store.svg',
|
'assets/img/icon/history_store.svg',
|
||||||
|
|||||||
@@ -2,177 +2,116 @@ import 'package:ef/ef.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
||||||
import 'package:vbvs_app/common/color/appColors.dart';
|
import 'package:vbvs_app/common/color/appColors.dart';
|
||||||
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/controller/user_info_controller.dart';
|
import 'package:vbvs_app/controller/user_info_controller.dart';
|
||||||
|
|
||||||
class HelpArticle extends StatelessWidget {
|
class HelpArticle extends StatefulWidget {
|
||||||
Map article;
|
final Map article;
|
||||||
HelpArticle({super.key, required this.article});
|
HelpArticle({super.key, required this.article});
|
||||||
|
|
||||||
// get articleController => Get.find<ArticleController>();
|
@override
|
||||||
get userInfoController => Get.find<UserInfoController>();
|
State<HelpArticle> createState() => _HelpArticleState();
|
||||||
|
}
|
||||||
|
|
||||||
var isLike = 0.obs;
|
class _HelpArticleState extends State<HelpArticle> {
|
||||||
|
bool isLoading = true;
|
||||||
// @override
|
|
||||||
// Widget build(BuildContext context) {
|
|
||||||
// String top_imgOrVideo = "";
|
|
||||||
// if (article['imgOrVideo'] == 0) {
|
|
||||||
// top_imgOrVideo =
|
|
||||||
// '''<img class="video" src="${getStorageResourceUrl(article['coverUrl'])}" />''';
|
|
||||||
// } else {
|
|
||||||
// top_imgOrVideo =
|
|
||||||
// '''<video controls class="video" src="${getStorageResourceUrl(article['videoUrl'])}" ></video>''';
|
|
||||||
// }
|
|
||||||
// String newText = article['text'];
|
|
||||||
|
|
||||||
// RegExp("<img\\s*src=\"([^\"]*)\"")
|
|
||||||
// .allMatches(newText)
|
|
||||||
// .toList()
|
|
||||||
// .map((d) => d.group(1))
|
|
||||||
// .toList()
|
|
||||||
// .forEach((d) {
|
|
||||||
// newText = newText.replaceAll("$d", getStorageResourceUrl("$d"));
|
|
||||||
// });
|
|
||||||
|
|
||||||
// String html = '''
|
|
||||||
// <html>
|
|
||||||
// <meta name="viewport" charset="UTF-8"
|
|
||||||
// content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
|
|
||||||
|
|
||||||
// <head>
|
|
||||||
// <title>Test Page</title>
|
|
||||||
// </head>
|
|
||||||
// <style>
|
|
||||||
|
|
||||||
// body {
|
|
||||||
// width: 98%;
|
|
||||||
// margin: 0 auto;
|
|
||||||
// overflow-x: hidden;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .video {
|
|
||||||
// width: 100%;
|
|
||||||
// height: 270px;
|
|
||||||
// background-color: #9EA4B7;
|
|
||||||
// border-radius: 6px;
|
|
||||||
// }
|
|
||||||
// </style>
|
|
||||||
|
|
||||||
// <body>
|
|
||||||
// <div style="padding: 15px;width: calc(100% - 36px);">
|
|
||||||
// ${top_imgOrVideo}
|
|
||||||
// <div style="height: 2px;width: 100%;background-color: #D6D6D6;margin: 15px 0 15px 0;"></div>
|
|
||||||
// <div style="line-height: 22px;font-size: 15px;">${article['title']}</div>
|
|
||||||
// <div style="display: flex;align-items: center;font-size: 13;margin-bottom: 24px;margin-top: 10px;">
|
|
||||||
// <div style="color: #182B7C;">${article['author']}</div>
|
|
||||||
// <div style="margin-left: 13px; color: #D3D3D3;">${time_08_Formatter(article['created_at'])}</div>
|
|
||||||
// </div>
|
|
||||||
// ${newText}
|
|
||||||
// </div>
|
|
||||||
// </body>
|
|
||||||
|
|
||||||
// </html>
|
|
||||||
// ''';
|
|
||||||
|
|
||||||
// print("$html");
|
|
||||||
// // articleController.readAdd(article['id']);
|
|
||||||
// String? uid = userInfoController.model.user?.uid;
|
|
||||||
// print("${userInfoController.model.user}");
|
|
||||||
// // uid = "sss";
|
|
||||||
// // if (uid != null) {
|
|
||||||
// // articleController.findIsLike(uid, article['id']).then((d) {
|
|
||||||
// // isLike.value = d;
|
|
||||||
// // });
|
|
||||||
// // }
|
|
||||||
|
|
||||||
// return LayoutBuilder(
|
|
||||||
// builder: (context, boxConstraints) => GestureDetector(
|
|
||||||
// onTap: () => FocusScope.of(context).unfocus(),
|
|
||||||
// child: Scaffold(
|
|
||||||
// appBar: AppBar(
|
|
||||||
// backgroundColor: AppColors.bg_color,
|
|
||||||
// automaticallyImplyLeading: false,
|
|
||||||
// iconTheme: IconThemeData(color: Colors.white),
|
|
||||||
// titleSpacing: 0,
|
|
||||||
// leading: returnIconButtom,
|
|
||||||
// ),
|
|
||||||
// body: SafeArea(
|
|
||||||
// top: true,
|
|
||||||
// child: Container(
|
|
||||||
// width: MediaQuery.sizeOf(context).width,
|
|
||||||
// height: MediaQuery.sizeOf(context).height,
|
|
||||||
// decoration: BoxDecoration(
|
|
||||||
// color: Colors.white,
|
|
||||||
// // color: AppColors.bg_color,
|
|
||||||
// // image: DecorationImage(
|
|
||||||
// // image: AssetImage("assets/images/background.png$test"),
|
|
||||||
// // fit: BoxFit.cover,
|
|
||||||
// // ),
|
|
||||||
// ),
|
|
||||||
// child: Column(
|
|
||||||
// children: [
|
|
||||||
// Expanded(
|
|
||||||
// child: Container(
|
|
||||||
// // child: WebViewWidget(
|
|
||||||
// // controller: WebViewController()
|
|
||||||
// // ..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
||||||
// // ..loadHtmlString(html),
|
|
||||||
// // ),
|
|
||||||
// child: InAppWebView(
|
|
||||||
// initialData:
|
|
||||||
// InAppWebViewInitialData(data: html, encoding: ""),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Container(
|
||||||
backgroundColor: const Color(0xFF042C46),
|
decoration: const BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
image: AssetImage('assets/images/new_background.png'), // 本地图片
|
||||||
|
fit: BoxFit.fill, // 填满整个 Container
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Scaffold(
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: const Color(0xFF042C46),
|
backgroundColor: Colors.transparent,
|
||||||
title: Text("问题与帮助", style: TextStyle(color: Colors.white)),
|
automaticallyImplyLeading: false,
|
||||||
centerTitle: true,
|
iconTheme: IconThemeData(color: Colors.white),
|
||||||
leading: IconButton(
|
titleSpacing: 0,
|
||||||
icon: Icon(Icons.arrow_back, color: Colors.white),
|
title: SizedBox(
|
||||||
onPressed: () => Navigator.pop(context),
|
width: double.infinity,
|
||||||
|
height: 180.rpx,
|
||||||
|
child: Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
// 中间居中的标题
|
||||||
|
Text(
|
||||||
|
'问题与帮助',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 30.rpx,
|
||||||
),
|
),
|
||||||
elevation: 0,
|
|
||||||
),
|
),
|
||||||
body: Column(
|
// 左侧图标
|
||||||
|
Positioned(
|
||||||
|
left: 20.rpx,
|
||||||
|
child: returnIconButtomNew,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: [],
|
||||||
|
centerTitle: false,
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: EdgeInsets.only(left: 30.rpx, right: 30.rpx),
|
||||||
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
padding: EdgeInsets.only(
|
||||||
|
left: 26.rpx, top: 53.rpx, bottom: 15.rpx),
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: Text(
|
child: Text(
|
||||||
article['title'],
|
widget.article['title'],
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 18,
|
fontSize: 30.rpx,
|
||||||
fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
Divider(
|
||||||
|
color: Color(0XFF929699),
|
||||||
|
thickness: 0.5.rpx,
|
||||||
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: InAppWebView(
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
InAppWebView(
|
||||||
initialData: InAppWebViewInitialData(
|
initialData: InAppWebViewInitialData(
|
||||||
data: wrapHtml(article['content']),
|
data: wrapHtml(widget.article['content']),
|
||||||
),
|
),
|
||||||
|
initialSettings: InAppWebViewSettings(
|
||||||
|
transparentBackground: true,
|
||||||
|
),
|
||||||
|
onLoadStop: (controller, url) {
|
||||||
|
setState(() {
|
||||||
|
isLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
if (isLoading)
|
||||||
|
Container(
|
||||||
|
color: const Color(0xFF042C46),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: const CircularProgressIndicator(
|
||||||
|
valueColor:
|
||||||
|
AlwaysStoppedAnimation<Color>(Colors.white),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 包装成完整 HTML 页面,添加适配样式
|
|
||||||
String wrapHtml(String htmlContent) {
|
String wrapHtml(String htmlContent) {
|
||||||
return """
|
return """
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@@ -182,11 +121,12 @@ class HelpArticle extends StatelessWidget {
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
color: #FFFFFF;
|
color: #929699;
|
||||||
background-color: #042C46;
|
background-color: transparent;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
padding: 16px;
|
padding: 0;
|
||||||
font-size: 16px;
|
font-size: 18;
|
||||||
|
|
||||||
}
|
}
|
||||||
p, li {
|
p, li {
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
|
|||||||
@@ -515,6 +515,7 @@ class _NewHomePageState extends State<NewHomePage> {
|
|||||||
isMultiSelect: false,
|
isMultiSelect: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
),
|
),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ class _MinePageState extends State<NewMinePage> {
|
|||||||
userInfoController
|
userInfoController
|
||||||
.model.user!.avatar!.isEmpty
|
.model.user!.avatar!.isEmpty
|
||||||
? Image.asset(
|
? Image.asset(
|
||||||
"assets/images/people_avatar.png",
|
"assets/images/default_avatar.png",
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
)
|
)
|
||||||
: Image.network(
|
: Image.network(
|
||||||
@@ -149,7 +149,7 @@ class _MinePageState extends State<NewMinePage> {
|
|||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
))
|
))
|
||||||
: Image.asset(
|
: Image.asset(
|
||||||
"assets/images/people_avatar.png",
|
"assets/images/default_avatar.png",
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -288,7 +288,9 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
.currentColor.sc21, // 点击时的背景色
|
.currentColor.sc21, // 点击时的背景色
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||||
onTap: () {},
|
onTap: () {
|
||||||
|
Get.toNamed('/aboutUs');
|
||||||
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
@@ -335,8 +337,7 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
40.rpx, 0.rpx, 40.rpx, 0.rpx),
|
40.rpx, 0.rpx, 40.rpx, 0.rpx),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
TopSlideNotification.show(context,
|
Get.toNamed("/userAgreementPage");
|
||||||
text: "待开发功能".tr);
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@@ -384,8 +385,7 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
0.rpx, 0.rpx, 0.rpx, 0.rpx),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
TopSlideNotification.show(context,
|
Get.toNamed("/privacyPolicyPage");
|
||||||
text: "待开发功能".tr);
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
@@ -568,8 +568,10 @@ class _SettingPageState extends State<SettingPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
AppConstants().ent_type == 1? 'Copyright © 202-2025 嘉兴太和信息技术有限责任公司 版权所有'
|
AppConstants().ent_type == 1
|
||||||
.tr:"Copyright © 202-2025 杭州欢睡科技有限公司 版权所有",
|
? 'Copyright © 202-2025 嘉兴太和信息技术有限责任公司 版权所有'
|
||||||
|
.tr
|
||||||
|
: "Copyright © 202-2025 杭州欢睡科技有限公司 版权所有",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: themeController.currentColor.sc4,
|
color: themeController.currentColor.sc4,
|
||||||
fontFamily: 'Inter',
|
fontFamily: 'Inter',
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ import 'package:ef/ef.dart';
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
import 'package:vbvs_app/common/util/FitTool.dart';
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
|
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
|
||||||
import 'package:vbvs_app/controller/mh_controller/people_info_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/people_info_controller.dart';
|
||||||
|
|
||||||
@@ -58,7 +60,7 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
children: [
|
children: [
|
||||||
// 中间居中的标题
|
// 中间居中的标题
|
||||||
Text(
|
Text(
|
||||||
'人员资料',
|
'人员资料'.tr,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -89,7 +91,9 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
d['height'].toString().isNotEmpty &&
|
d['height'].toString().isNotEmpty &&
|
||||||
int.tryParse(d['height'].toString()) ==
|
int.tryParse(d['height'].toString()) ==
|
||||||
null) {
|
null) {
|
||||||
showToast("$prefix身高请输入数字");
|
TopSlideNotification.show(context,
|
||||||
|
text: "请选择身高".tr,
|
||||||
|
textColor: Color(0xFFFF7159));
|
||||||
isValid = false;
|
isValid = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -98,16 +102,9 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
d['weight'].toString().isNotEmpty &&
|
d['weight'].toString().isNotEmpty &&
|
||||||
int.tryParse(d['weight'].toString()) ==
|
int.tryParse(d['weight'].toString()) ==
|
||||||
null) {
|
null) {
|
||||||
showToast("$prefix体重请输入数字");
|
TopSlideNotification.show(context,
|
||||||
isValid = false;
|
text: "请选择体重".tr,
|
||||||
break;
|
textColor: Color(0xFFFF7159));
|
||||||
}
|
|
||||||
|
|
||||||
if (d['tel'] != null &&
|
|
||||||
d['tel'].toString().isNotEmpty &&
|
|
||||||
!MyUtils.isValidPhoneNumber(
|
|
||||||
d['tel'].toString())) {
|
|
||||||
showToast("$prefix请输入正确的电话");
|
|
||||||
isValid = false;
|
isValid = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -116,7 +113,9 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
d['contact'].toString().isNotEmpty &&
|
d['contact'].toString().isNotEmpty &&
|
||||||
!MyUtils.isValidPhoneNumber(
|
!MyUtils.isValidPhoneNumber(
|
||||||
d['contact'].toString())) {
|
d['contact'].toString())) {
|
||||||
showToast("$prefix请输入正确的紧急联系人电话");
|
TopSlideNotification.show(context,
|
||||||
|
text: "请输入正确的联系人电话".tr,
|
||||||
|
textColor: Color(0xFFFF7159));
|
||||||
isValid = false;
|
isValid = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -126,13 +125,15 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
if (isValid) {
|
if (isValid) {
|
||||||
for (var data in controller.model.peopleList) {
|
for (var data in controller.model.peopleList) {
|
||||||
try {
|
try {
|
||||||
await controller.savePeoples(
|
await controller.savePeoples(data);
|
||||||
data); // 注意:你这个方法名是 savePeoples,建议改成 savePerson
|
TopSlideNotification.show(context,
|
||||||
showToast("保存成功(${data['mac']})",
|
text: "更新成功".tr,
|
||||||
color: color_success);
|
textColor: Color(0XFF00C1AA));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("保存失败:$e");
|
print("保存失败:$e");
|
||||||
showToast("保存失败(${data['mac']})");
|
TopSlideNotification.show(context,
|
||||||
|
text: "更新失败".tr,
|
||||||
|
textColor: Color(0xFFFF7159));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,7 +154,7 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
// color: stringToColor("#182B7C"),
|
// color: stringToColor("#182B7C"),
|
||||||
// ),
|
// ),
|
||||||
child: Text(
|
child: Text(
|
||||||
"保存",
|
"保存".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0XFF011D33),
|
color: Color(0XFF011D33),
|
||||||
@@ -391,12 +392,16 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: 16.rpx,
|
width: 16.rpx,
|
||||||
),
|
),
|
||||||
Icon(
|
Container(
|
||||||
Icons.expand_more,
|
height: 30.rpx,
|
||||||
color:
|
width: 30.rpx,
|
||||||
Colors.white,
|
child:
|
||||||
size: 48.rpx,
|
SvgPicture
|
||||||
),
|
.asset(
|
||||||
|
'assets/img/icon/expand_more.svg',
|
||||||
|
color: Colors
|
||||||
|
.white,
|
||||||
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -560,11 +565,15 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 16.rpx),
|
width: 16.rpx),
|
||||||
Icon(
|
Container(
|
||||||
Icons.expand_more,
|
height: 30.rpx,
|
||||||
color:
|
width: 30.rpx,
|
||||||
Colors.white,
|
child: SvgPicture
|
||||||
size: 48.rpx),
|
.asset(
|
||||||
|
'assets/img/icon/expand_more.svg',
|
||||||
|
color: Colors
|
||||||
|
.white,
|
||||||
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -649,12 +658,16 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 16.rpx),
|
width: 16.rpx),
|
||||||
Icon(
|
Container(
|
||||||
Icons
|
height: 30.rpx,
|
||||||
.expand_more,
|
width: 30.rpx,
|
||||||
|
child:
|
||||||
|
SvgPicture
|
||||||
|
.asset(
|
||||||
|
'assets/img/icon/expand_more.svg',
|
||||||
color: Colors
|
color: Colors
|
||||||
.white,
|
.white,
|
||||||
size: 48.rpx),
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -769,12 +782,16 @@ class PeopleInfoPage extends GetView<PeopleInfoController> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: 16.rpx,
|
width: 16.rpx,
|
||||||
),
|
),
|
||||||
Icon(
|
Container(
|
||||||
Icons.expand_more,
|
height: 30.rpx,
|
||||||
color:
|
width: 30.rpx,
|
||||||
Colors.white,
|
child:
|
||||||
size: 48.rpx,
|
SvgPicture
|
||||||
),
|
.asset(
|
||||||
|
'assets/img/icon/expand_more.svg',
|
||||||
|
color: Colors
|
||||||
|
.white,
|
||||||
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
121
lib/pages/mh_page/privacy_policy.dart
Normal file
121
lib/pages/mh_page/privacy_policy.dart
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_pdfview/flutter_pdfview.dart';
|
||||||
|
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/controller/setting/pdf/PrivacyPdfController.dart';
|
||||||
|
|
||||||
|
class PrivacyPolicyPage extends StatefulWidget {
|
||||||
|
PrivacyPolicyPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<PrivacyPolicyPage> createState() => _PrivacyPolicyPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PrivacyPolicyPageState extends State<PrivacyPolicyPage> {
|
||||||
|
PrivacyPdfController pdfController = Get.find();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
String language = "zh_CN"; // 默认语言
|
||||||
|
int ent_type = AppConstants().ent_type;
|
||||||
|
if (languageController.selectLanguage?.value?.language_code != null) {
|
||||||
|
language = languageController.selectLanguage!.value!.language_code!;
|
||||||
|
} // 根据 ent_type 拼接不同的文件名
|
||||||
|
String pdfName =
|
||||||
|
ent_type == 1 ? "$language.pdf" : "${language}_$ent_type.pdf";
|
||||||
|
|
||||||
|
pdfController.loadPdf(
|
||||||
|
2,
|
||||||
|
"https://vsbst-api.he-info.cn/vsbs_sotrage/privacy-scheme/$pdfName",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return LayoutBuilder(
|
||||||
|
builder: (context, bodySize) => GestureDetector(
|
||||||
|
onTap: () => FocusScope.of(context).unfocus(),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
image: AssetImage('assets/images/new_background.png'), // 本地图片
|
||||||
|
fit: BoxFit.fill, // 填满整个 Container
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Scaffold(
|
||||||
|
backgroundColor: Colors.transparent, // 加上这一行
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: themeController.currentColor.sc17,
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
iconTheme: IconThemeData(
|
||||||
|
color: themeController.currentColor.sc3,
|
||||||
|
),
|
||||||
|
titleSpacing: 0,
|
||||||
|
// leading: returnIconButtom,
|
||||||
|
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,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
/// 左边返回按钮
|
||||||
|
Positioned(
|
||||||
|
left: 20,
|
||||||
|
child: returnIconButtomNew,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
actions: [],
|
||||||
|
centerTitle: false,
|
||||||
|
),
|
||||||
|
body: SafeArea(
|
||||||
|
top: true,
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 0.rpx),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Obx(() {
|
||||||
|
if (pdfController.localPdfPath.value == null) {
|
||||||
|
return Center(child: CircularProgressIndicator());
|
||||||
|
} else {
|
||||||
|
return PDFView(
|
||||||
|
filePath: pdfController.localPdfPath.value!,
|
||||||
|
autoSpacing: false,
|
||||||
|
enableSwipe: true,
|
||||||
|
swipeHorizontal: false,
|
||||||
|
pageSnap: true,
|
||||||
|
fitEachPage: true,
|
||||||
|
defaultPage: 0,
|
||||||
|
onRender: (pages) => print('PDF 渲染完成,共 $pages 页'),
|
||||||
|
onError: (error) => print('PDF 加载错误: $error'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ import 'package:flutter/gestures.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:vbvs_app/common/util/FitTool.dart';
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
|
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
|
||||||
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
||||||
import 'package:vbvs_app/controller/mh_controller/apply_repair_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/apply_repair_controller.dart';
|
||||||
import 'package:vbvs_app/controller/mh_controller/repair_list_controller.dart';
|
import 'package:vbvs_app/controller/mh_controller/repair_list_controller.dart';
|
||||||
@@ -257,7 +258,7 @@ class DeviceRepairPage extends GetView<RepairListController> {
|
|||||||
))
|
))
|
||||||
.toList(),
|
.toList(),
|
||||||
)
|
)
|
||||||
: EmptyMessageWidget();
|
: NullDataWidget();
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:vbvs_app/common/util/FitTool.dart';
|
|||||||
import 'package:vbvs_app/common/util/MyUtils.dart';
|
import 'package:vbvs_app/common/util/MyUtils.dart';
|
||||||
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
import 'package:vbvs_app/common/util/requestWithLog.dart';
|
||||||
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
import 'package:vbvs_app/component/tool/CustomCard.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
|
||||||
class RoomPickerPage extends StatefulWidget {
|
class RoomPickerPage extends StatefulWidget {
|
||||||
final Map data;
|
final Map data;
|
||||||
@@ -186,7 +187,15 @@ class _RoomPickerPageState extends State<RoomPickerPage> {
|
|||||||
"roomId": rooms[selectedIndex]['_id'],
|
"roomId": rooms[selectedIndex]['_id'],
|
||||||
},
|
},
|
||||||
onSuccess: (res) {
|
onSuccess: (res) {
|
||||||
'更新人员信息成功: $res';
|
Get.back();
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: "更新成功".tr,
|
||||||
|
textColor: Color(0XFF00C1AA));
|
||||||
|
},
|
||||||
|
onFailure: (res) {
|
||||||
|
TopSlideNotification.show(context,
|
||||||
|
text: "更新失败".tr,
|
||||||
|
textColor: Color(0xFFFF7159));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -207,7 +216,7 @@ class _RoomPickerPageState extends State<RoomPickerPage> {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.circular(6),
|
borderRadius: BorderRadius.circular(6),
|
||||||
),
|
),
|
||||||
child: Text("完成",
|
child: Text("完成".tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: const Color(0xFF003058),
|
color: const Color(0xFF003058),
|
||||||
fontSize: 30.rpx,
|
fontSize: 30.rpx,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class ScorePage extends GetView<mh.ScoreController> {
|
|||||||
children: [
|
children: [
|
||||||
// 中间居中的标题
|
// 中间居中的标题
|
||||||
Text(
|
Text(
|
||||||
'评价',
|
'评价'.tr,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -107,7 +107,7 @@ class ScorePage extends GetView<mh.ScoreController> {
|
|||||||
alignment:
|
alignment:
|
||||||
AlignmentDirectional(0, 0),
|
AlignmentDirectional(0, 0),
|
||||||
child: Text(
|
child: Text(
|
||||||
'我要评价',
|
'我要评价'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
fontSize: 30.rpx,
|
fontSize: 30.rpx,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class _SleepHabitPageState extends State<SleepHabitPage> {
|
|||||||
children: [
|
children: [
|
||||||
// 中间居中的标题
|
// 中间居中的标题
|
||||||
Text(
|
Text(
|
||||||
'设备报修',
|
'睡眠习惯'.tr,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -77,7 +77,7 @@ class _SleepHabitPageState extends State<SleepHabitPage> {
|
|||||||
width: bodysize!.maxWidth * 1,
|
width: bodysize!.maxWidth * 1,
|
||||||
height: bodysize!.maxHeight * 0.056,
|
height: bodysize!.maxHeight * 0.056,
|
||||||
child: Text(
|
child: Text(
|
||||||
'柔性唤醒',
|
'柔性唤醒'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 26.rpx, color: Colors.white),
|
fontSize: 26.rpx, color: Colors.white),
|
||||||
))),
|
))),
|
||||||
@@ -95,7 +95,7 @@ class _SleepHabitPageState extends State<SleepHabitPage> {
|
|||||||
width: bodysize!.maxWidth * 1,
|
width: bodysize!.maxWidth * 1,
|
||||||
height: bodysize!.maxHeight * 0.056,
|
height: bodysize!.maxHeight * 0.056,
|
||||||
child: Text(
|
child: Text(
|
||||||
'睡眠隐私',
|
'睡眠隐私'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 26.rpx, color: Colors.white),
|
fontSize: 26.rpx, color: Colors.white),
|
||||||
)))
|
)))
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
children: [
|
children: [
|
||||||
// 中间居中的标题
|
// 中间居中的标题
|
||||||
Text(
|
Text(
|
||||||
'睡眠隐私',
|
'睡眠隐私'.tr,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@@ -125,7 +125,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'睡眠隐私功能',
|
'睡眠隐私功能'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF9EA4B7),
|
color: Color(0xFF9EA4B7),
|
||||||
@@ -156,9 +156,24 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
// getLine(),
|
// getLine(),
|
||||||
Container(
|
InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
showDayTimeSelectionDialog(context,
|
||||||
|
dayTimeArr: controller.model.smysStartTime,
|
||||||
|
title: "开始时间".tr, checkChange: (d) {
|
||||||
|
controller.attr.update((getmodel) {
|
||||||
|
getmodel.model.smysStartTime = [
|
||||||
|
int.parse("${d[0]}"),
|
||||||
|
int.parse("${d[1]}")
|
||||||
|
];
|
||||||
|
});
|
||||||
|
// updateParm();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: MediaQuery.sizeOf(context).height * 0.055,
|
height:
|
||||||
|
MediaQuery.sizeOf(context).height * 0.055,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
border: Border(
|
border: Border(
|
||||||
bottom: BorderSide(
|
bottom: BorderSide(
|
||||||
@@ -178,7 +193,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'开始时间',
|
'开始时间'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF9EA4B7),
|
color: Color(0xFF9EA4B7),
|
||||||
@@ -186,22 +201,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
InkWell(
|
Row(
|
||||||
onTap: () async {
|
|
||||||
showDayTimeSelectionDialog(context,
|
|
||||||
dayTimeArr:
|
|
||||||
controller.model.smysStartTime,
|
|
||||||
title: "开始时间", checkChange: (d) {
|
|
||||||
controller.attr.update((getmodel) {
|
|
||||||
getmodel.model.smysStartTime = [
|
|
||||||
int.parse("${d[0]}"),
|
|
||||||
int.parse("${d[1]}")
|
|
||||||
];
|
|
||||||
});
|
|
||||||
// updateParm();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -225,12 +225,26 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
),
|
||||||
// getLine(),
|
// getLine(),
|
||||||
Container(
|
InkWell(
|
||||||
|
onTap: () async {
|
||||||
|
showDayTimeSelectionDialog(context,
|
||||||
|
dayTimeArr: controller.model.smysEndTime,
|
||||||
|
title: "结束时间".tr, checkChange: (d) {
|
||||||
|
controller.attr.update((getmodel) {
|
||||||
|
getmodel.model.smysEndTime = [
|
||||||
|
int.parse("${d[0]}"),
|
||||||
|
int.parse("${d[1]}")
|
||||||
|
];
|
||||||
|
});
|
||||||
|
// updateParm();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: MediaQuery.sizeOf(context).height * 0.055,
|
height: MediaQuery.sizeOf(context).height * 0.055,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
@@ -252,7 +266,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'结束时间',
|
'结束时间'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF9EA4B7),
|
color: Color(0xFF9EA4B7),
|
||||||
@@ -260,22 +274,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
InkWell(
|
Row(
|
||||||
onTap: () async {
|
|
||||||
showDayTimeSelectionDialog(context,
|
|
||||||
dayTimeArr:
|
|
||||||
controller.model.smysEndTime,
|
|
||||||
title: "结束时间", checkChange: (d) {
|
|
||||||
controller.attr.update((getmodel) {
|
|
||||||
getmodel.model.smysEndTime = [
|
|
||||||
int.parse("${d[0]}"),
|
|
||||||
int.parse("${d[1]}")
|
|
||||||
];
|
|
||||||
});
|
|
||||||
// updateParm();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -299,12 +298,11 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// getLine(),
|
), // getLine(),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 30.rpx,
|
height: 30.rpx,
|
||||||
),
|
),
|
||||||
@@ -314,7 +312,7 @@ class Smys extends GetView<SleepingHabitController> {
|
|||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
decoration: BoxDecoration(),
|
decoration: BoxDecoration(),
|
||||||
child: Text(
|
child: Text(
|
||||||
'*注:开启睡眠隐私功能后,在设置的时间段内,将不会采集您的睡眠数据。',
|
'*注:开启睡眠隐私功能后,在设置的时间段内,将不会采集您的睡眠数据。'.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Color(0xFF9EA4B7),
|
color: Color(0xFF9EA4B7),
|
||||||
|
|||||||
@@ -219,52 +219,6 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// leading: returnIconButtomAddCallback(() {
|
|
||||||
// controller.saveDataApi();
|
|
||||||
// }),
|
|
||||||
|
|
||||||
// Container(
|
|
||||||
// width: double.infinity,
|
|
||||||
// height: 70.rpx,
|
|
||||||
// child: Row(
|
|
||||||
// mainAxisSize: MainAxisSize.max,
|
|
||||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
// children: [
|
|
||||||
// Text(
|
|
||||||
// '柔性唤醒',
|
|
||||||
// style: TextStyle(
|
|
||||||
// fontFamily: 'Readex Pro',
|
|
||||||
// color: Colors.white,
|
|
||||||
// letterSpacing: 0,
|
|
||||||
// fontSize: 30.rpx),
|
|
||||||
// ),
|
|
||||||
// InkWell(
|
|
||||||
// onTap: () {
|
|
||||||
// alarmChange();
|
|
||||||
// },
|
|
||||||
// child: Container(
|
|
||||||
// margin: EdgeInsets.only(right: 30.rpx),
|
|
||||||
// width: 140.rpx,
|
|
||||||
// height: 66.rpx,
|
|
||||||
// alignment: Alignment.center,
|
|
||||||
// decoration: BoxDecoration(
|
|
||||||
// borderRadius: BorderRadius.circular(5),
|
|
||||||
// color: stringToColor("#182B7C")),
|
|
||||||
// child: Text(
|
|
||||||
// "保存",
|
|
||||||
// style: FlutterFlowTheme.of(context)
|
|
||||||
// .bodyMedium
|
|
||||||
// .override(
|
|
||||||
// fontFamily: 'Readex Pro',
|
|
||||||
// color: stringToColor("#9EA4B7"),
|
|
||||||
// letterSpacing: 0,
|
|
||||||
// fontSize: 30.rpx),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// )
|
|
||||||
// ],
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
actions: [],
|
actions: [],
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
),
|
),
|
||||||
@@ -343,8 +297,23 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
getLine(),
|
getLine(),
|
||||||
Container(
|
InkWell(
|
||||||
margin: EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
onTap: () async {
|
||||||
|
showDayTimeSelectionDialog(context,
|
||||||
|
dayTimeArr: controller.model.rxhxWakeTime,
|
||||||
|
title: "唤醒时间", checkChange: (d) {
|
||||||
|
controller.attr.update((getmodel) {
|
||||||
|
getmodel.model.rxhxWakeTime = [
|
||||||
|
int.parse("${d[0]}"),
|
||||||
|
int.parse("${d[1]}")
|
||||||
|
];
|
||||||
|
});
|
||||||
|
print("$d");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 90.rpx,
|
height: 90.rpx,
|
||||||
decoration: const BoxDecoration(),
|
decoration: const BoxDecoration(),
|
||||||
@@ -361,21 +330,7 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
InkWell(
|
Row(
|
||||||
onTap: () async {
|
|
||||||
showDayTimeSelectionDialog(context,
|
|
||||||
dayTimeArr: controller.model.rxhxWakeTime,
|
|
||||||
title: "唤醒时间", checkChange: (d) {
|
|
||||||
controller.attr.update((getmodel) {
|
|
||||||
getmodel.model.rxhxWakeTime = [
|
|
||||||
int.parse("${d[0]}"),
|
|
||||||
int.parse("${d[1]}")
|
|
||||||
];
|
|
||||||
});
|
|
||||||
print("$d");
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -399,19 +354,36 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
getLine(),
|
getLine(),
|
||||||
Container(
|
InkWell(
|
||||||
margin: EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
onTap: () {
|
||||||
|
showOneSelectionDialog(
|
||||||
|
context,
|
||||||
|
arr: ['开', "关"],
|
||||||
|
checkIndex: controller.model.rxhxIsAnMo ? 0 : 1,
|
||||||
|
title: "按摩",
|
||||||
|
checkChange: (index) {
|
||||||
|
controller.attr.update((getmodel) {
|
||||||
|
getmodel.model.rxhxIsAnMo =
|
||||||
|
index == 0 ? true : false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 90.rpx,
|
height: 90.rpx,
|
||||||
decoration: const BoxDecoration(),
|
decoration: const BoxDecoration(),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'按摩',
|
'按摩',
|
||||||
@@ -422,23 +394,7 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
InkWell(
|
Row(
|
||||||
onTap: () {
|
|
||||||
showOneSelectionDialog(
|
|
||||||
context,
|
|
||||||
arr: ['开', "关"],
|
|
||||||
checkIndex:
|
|
||||||
controller.model.rxhxIsAnMo ? 0 : 1,
|
|
||||||
title: "按摩",
|
|
||||||
checkChange: (index) {
|
|
||||||
controller.attr.update((getmodel) {
|
|
||||||
getmodel.model.rxhxIsAnMo =
|
|
||||||
index == 0 ? true : false;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -462,29 +418,10 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
)),
|
||||||
),
|
),
|
||||||
getLine(),
|
getLine(),
|
||||||
Container(
|
|
||||||
margin: EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
|
||||||
width: double.infinity,
|
|
||||||
height: 90.rpx,
|
|
||||||
decoration: const BoxDecoration(),
|
|
||||||
child: Row(
|
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'唤醒部位',
|
|
||||||
style: TextStyle(
|
|
||||||
fontFamily: 'Readex Pro',
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 26.rpx,
|
|
||||||
letterSpacing: 0,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showOneSelectionDialog(
|
showOneSelectionDialog(
|
||||||
@@ -499,7 +436,27 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
child: Container(
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 40.rpx, right: 30.rpx),
|
||||||
|
width: double.infinity,
|
||||||
|
height: 90.rpx,
|
||||||
|
decoration: const BoxDecoration(),
|
||||||
child: Row(
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'唤醒部位',
|
||||||
|
style: TextStyle(
|
||||||
|
fontFamily: 'Readex Pro',
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 26.rpx,
|
||||||
|
letterSpacing: 0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -523,9 +480,8 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
)),
|
||||||
),
|
),
|
||||||
getLine(),
|
getLine(),
|
||||||
Container(
|
Container(
|
||||||
@@ -550,65 +506,120 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
// Padding(
|
||||||
|
// padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
|
// 0, 20.rpx, 0, 0),
|
||||||
|
// child: Container(
|
||||||
|
// width: double.infinity,
|
||||||
|
// height:
|
||||||
|
// MediaQuery.sizeOf(context).height * 0.046,
|
||||||
|
// decoration: const BoxDecoration(),
|
||||||
|
// child: Row(
|
||||||
|
// mainAxisSize: MainAxisSize.max,
|
||||||
|
// mainAxisAlignment:
|
||||||
|
// MainAxisAlignment.spaceBetween,
|
||||||
|
// children: [
|
||||||
|
// ...List.generate(7, (index) {
|
||||||
|
// return InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// controller.attr.update((getmodel) {
|
||||||
|
// getmodel.model
|
||||||
|
// .rxhxWeeks[index] = getmodel
|
||||||
|
// .model
|
||||||
|
// .rxhxWeeks[index] ==
|
||||||
|
// 0
|
||||||
|
// ? 1
|
||||||
|
// : 0;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// child: AspectRatio(
|
||||||
|
// aspectRatio: 1,
|
||||||
|
// child: ClipOval(
|
||||||
|
// child: Container(
|
||||||
|
// height: double.infinity,
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// color: controller.model
|
||||||
|
// .rxhxWeeks[
|
||||||
|
// index] ==
|
||||||
|
// 1
|
||||||
|
// ? Color(0xFF84F5FF)
|
||||||
|
// : Color(0XFF003058)),
|
||||||
|
// child: Center(
|
||||||
|
// child: Text(
|
||||||
|
// weeks[index],
|
||||||
|
// style: TextStyle(
|
||||||
|
// color: controller.model
|
||||||
|
// .rxhxWeeks[
|
||||||
|
// index] ==
|
||||||
|
// 1
|
||||||
|
// ? Color(0XFF003058)
|
||||||
|
// : Colors.white),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
0, 20.rpx, 0, 0),
|
0, 20.rpx, 0, 0),
|
||||||
child: Container(
|
child: SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height:
|
height:
|
||||||
MediaQuery.sizeOf(context).height * 0.046,
|
MediaQuery.sizeOf(context).height * 0.046,
|
||||||
decoration: const BoxDecoration(),
|
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.max,
|
|
||||||
mainAxisAlignment:
|
mainAxisAlignment:
|
||||||
MainAxisAlignment.spaceBetween,
|
MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: List.generate(7, (index) {
|
||||||
...List.generate(7, (index) {
|
final bool selected =
|
||||||
|
controller.model.rxhxWeeks[index] ==
|
||||||
|
1;
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
controller.attr.update((getmodel) {
|
controller.attr.update((getmodel) {
|
||||||
|
getmodel.model.rxhxWeeks[index] =
|
||||||
getmodel.model
|
getmodel.model
|
||||||
.rxhxWeeks[index] = getmodel
|
|
||||||
.model
|
|
||||||
.rxhxWeeks[index] ==
|
.rxhxWeeks[index] ==
|
||||||
0
|
0
|
||||||
? 1
|
? 1
|
||||||
: 0;
|
: 0;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: AspectRatio(
|
borderRadius: BorderRadius.circular(
|
||||||
aspectRatio: 1,
|
50), // 点击水波圆角区域
|
||||||
child: ClipOval(
|
|
||||||
child: Container(
|
child: Container(
|
||||||
height: double.infinity,
|
width: MediaQuery.sizeOf(context)
|
||||||
|
.height *
|
||||||
|
0.046, // 保证是正圆
|
||||||
|
height: MediaQuery.sizeOf(context)
|
||||||
|
.height *
|
||||||
|
0.046,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: controller.model
|
shape: BoxShape.circle,
|
||||||
.rxhxWeeks[
|
color: selected
|
||||||
index] ==
|
? const Color(0xFF84F5FF)
|
||||||
1
|
: const Color(0xFF003058),
|
||||||
? Color(0xFF84F5FF)
|
),
|
||||||
: Color(0XFF003058)),
|
alignment: Alignment.center,
|
||||||
child: Center(
|
|
||||||
child: Text(
|
child: Text(
|
||||||
weeks[index],
|
weeks[index],
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: controller.model
|
color: selected
|
||||||
.rxhxWeeks[
|
? const Color(0xFF003058)
|
||||||
index] ==
|
: Colors.white,
|
||||||
1
|
|
||||||
? Color(0XFF003058)
|
|
||||||
: Colors.white),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -624,7 +635,7 @@ class _RxhxMhtState extends State<RxhxMht> {
|
|||||||
'*注:开启该功能后,在设置的时间点,设备将启动一段固定时长的柔性唤醒功能。',
|
'*注:开启该功能后,在设置的时间点,设备将启动一段固定时长的柔性唤醒功能。',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: Colors.white,
|
color: Color(0xFF929699),
|
||||||
fontSize: 20.rpx,
|
fontSize: 20.rpx,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
|
|||||||
126
lib/pages/mh_page/user_agreement_page.dart
Normal file
126
lib/pages/mh_page/user_agreement_page.dart
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_pdfview/flutter_pdfview.dart';
|
||||||
|
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/controller/setting/pdf/UserPdfController.dart';
|
||||||
|
|
||||||
|
class UserAgreementPage extends StatefulWidget {
|
||||||
|
UserAgreementPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<UserAgreementPage> createState() => _UserAgreementPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _UserAgreementPageState extends State<UserAgreementPage> {
|
||||||
|
UserPdfController pdfController = Get.find();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
String language = "zh_CN"; // 默认语言
|
||||||
|
|
||||||
|
if (languageController.selectLanguage?.value?.language_code != null) {
|
||||||
|
language = languageController.selectLanguage!.value!.language_code!;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ent_type = AppConstants().ent_type;
|
||||||
|
|
||||||
|
// 根据 ent_type 拼接不同的文件名
|
||||||
|
String pdfName =
|
||||||
|
ent_type == 1 ? "$language.pdf" : "${language}_$ent_type.pdf";
|
||||||
|
|
||||||
|
pdfController.loadPdf(
|
||||||
|
1,
|
||||||
|
"https://vsbst-api.he-info.cn/vsbs_sotrage/user-scheme/$pdfName",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return LayoutBuilder(
|
||||||
|
builder: (context, bodySize) => GestureDetector(
|
||||||
|
onTap: () => FocusScope.of(context).unfocus(),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
image: DecorationImage(
|
||||||
|
image: AssetImage('assets/images/new_background.png'), // 本地图片
|
||||||
|
fit: BoxFit.fill, // 填满整个 Container
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Scaffold(
|
||||||
|
backgroundColor: Colors.transparent, // 加上这一行
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
automaticallyImplyLeading: false,
|
||||||
|
iconTheme: IconThemeData(
|
||||||
|
color: themeController.currentColor.sc3,
|
||||||
|
),
|
||||||
|
titleSpacing: 0,
|
||||||
|
// leading: returnIconButtom,
|
||||||
|
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,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
/// 左边返回按钮
|
||||||
|
Positioned(
|
||||||
|
left: 20,
|
||||||
|
child: returnIconButtomNew,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
actions: [],
|
||||||
|
centerTitle: false,
|
||||||
|
),
|
||||||
|
|
||||||
|
body: SafeArea(
|
||||||
|
top: true,
|
||||||
|
child: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 0.rpx),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Obx(() {
|
||||||
|
if (pdfController.localPdfPath.value == null) {
|
||||||
|
return Center(child: CircularProgressIndicator());
|
||||||
|
} else {
|
||||||
|
return PDFView(
|
||||||
|
filePath: pdfController.localPdfPath.value!,
|
||||||
|
autoSpacing: false,
|
||||||
|
enableSwipe: true,
|
||||||
|
swipeHorizontal: false,
|
||||||
|
pageSnap: true,
|
||||||
|
fitEachPage: true,
|
||||||
|
defaultPage: 0,
|
||||||
|
onRender: (pages) => print('PDF 渲染完成,共 $pages 页'),
|
||||||
|
onError: (error) => print('PDF 加载错误: $error'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -179,8 +179,8 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
|
|||||||
if (widget.data['arrow'] == null ||
|
if (widget.data['arrow'] == null ||
|
||||||
widget.data['arrow'] == true)
|
widget.data['arrow'] == true)
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 20,
|
||||||
child: returnIconButtom,
|
child: returnIconButtomNew,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -122,8 +122,8 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|||||||
|
|
||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 20,
|
||||||
child: returnIconButtom,
|
child: returnIconButtomNew,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -188,8 +188,8 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
|
|||||||
if (widget.data['arrow'] == null ||
|
if (widget.data['arrow'] == null ||
|
||||||
widget.data['arrow'] == true)
|
widget.data['arrow'] == true)
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 20,
|
||||||
child: returnIconButtom,
|
child: returnIconButtomNew,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class _SleepReportPageState extends State<SleepReportPage> {
|
|||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: returnIconButtom,
|
child: returnIconButtomNew,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -57,15 +57,13 @@ class _AboutUsPageState extends State<AboutUsPage> {
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
/// 居中标题
|
/// 居中标题
|
||||||
Text(
|
Text('关于我们'.tr,
|
||||||
'关于我们'.tr,
|
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Readex Pro',
|
fontFamily: 'Readex Pro',
|
||||||
color: themeController.currentColor.sc3,
|
color: themeController.currentColor.sc3,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
fontSize: 30.rpx,
|
fontSize: 30.rpx,
|
||||||
),
|
)),
|
||||||
),
|
|
||||||
|
|
||||||
/// 左边返回按钮
|
/// 左边返回按钮
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:ef/ef.dart';
|
import 'package:ef/ef.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:path/path.dart';
|
||||||
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
|
||||||
|
|
||||||
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
||||||
@@ -8,6 +9,7 @@ import 'package:vbvs_app/main.dart';
|
|||||||
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
|
import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
|
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
|
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
|
||||||
|
import 'package:vbvs_app/pages/mh_page/about_us.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
|
import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/applyRepair/apply_repair_success.dart';
|
import 'package:vbvs_app/pages/mh_page/applyRepair/apply_repair_success.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/apply_repair_page.dart';
|
import 'package:vbvs_app/pages/mh_page/apply_repair_page.dart';
|
||||||
@@ -25,6 +27,7 @@ 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/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/user/page/edit_userinfo_page.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/edit_userinfo_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/experience_store_page.dart';
|
import 'package:vbvs_app/pages/mh_page/experience_store_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/issue_list_page.dart';
|
import 'package:vbvs_app/pages/mh_page/issue_list_page.dart';
|
||||||
@@ -40,6 +43,7 @@ import 'package:vbvs_app/pages/mh_page/user/page/find_password_page.dart';
|
|||||||
import 'package:vbvs_app/pages/mh_page/user/page/mht_login_page.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/mht_login_page.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/user/page/rxhx_mht.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/rxhx_mht.dart';
|
||||||
import 'package:vbvs_app/pages/mh_page/user/page/update_password_page.dart';
|
import 'package:vbvs_app/pages/mh_page/user/page/update_password_page.dart';
|
||||||
|
import 'package:vbvs_app/pages/mh_page/user_agreement_page.dart';
|
||||||
import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart';
|
import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart';
|
||||||
import '../pages/mh_page/bluetooth.dart';
|
import '../pages/mh_page/bluetooth.dart';
|
||||||
import '../pages/mh_page/edit_address_page.dart';
|
import '../pages/mh_page/edit_address_page.dart';
|
||||||
@@ -98,6 +102,9 @@ var mhroutes = {
|
|||||||
"/helpArticle": (contxt, {arguments}) => HelpArticle(article: arguments),
|
"/helpArticle": (contxt, {arguments}) => HelpArticle(article: arguments),
|
||||||
"/mHTPeopleInfoPage": (contxt) => MHTPeopleInfoPage(),
|
"/mHTPeopleInfoPage": (contxt) => MHTPeopleInfoPage(),
|
||||||
"/applyRepairSuccess": (contxt) => ApplyRepairSuccess(),
|
"/applyRepairSuccess": (contxt) => ApplyRepairSuccess(),
|
||||||
|
"/aboutUs": (contxt) => MhAboutUsPage(),
|
||||||
|
"/userAgreementPage": (context) => UserAgreementPage(),
|
||||||
|
"/privacyPolicyPage": (context) => PrivacyPolicyPage(),
|
||||||
};
|
};
|
||||||
var mhonGenerateRoute = (RouteSettings settings) {
|
var mhonGenerateRoute = (RouteSettings settings) {
|
||||||
final String? name = settings.name; // 获取路由名称,如 /news 或 /search
|
final String? name = settings.name; // 获取路由名称,如 /news 或 /search
|
||||||
|
|||||||
248
pubspec.lock
248
pubspec.lock
@@ -5,9 +5,9 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: cff5448fe07ca7f2141dcb1b7c5ee430ca44d64d
|
||||||
resolved-ref: cff5448fe07ca7f2141dcb1b7c5ee430ca44d64d
|
resolved-ref: cff5448fe07ca7f2141dcb1b7c5ee430ca44d64d
|
||||||
url: "http://git.real.he-info.cn:8080/r/~qmqz/EasyDartModule.git"
|
url: "http://git.he-info.cn/r/~qmqz/EasyDartModule.git"
|
||||||
source: git
|
source: git
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
_fe_analyzer_shared:
|
_fe_analyzer_shared:
|
||||||
@@ -63,54 +63,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.7"
|
version: "1.0.7"
|
||||||
app_links:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: app_links
|
|
||||||
sha256: "85ed8fc1d25a76475914fff28cc994653bd900bc2c26e4b57a49e097febb54ba"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "6.4.0"
|
|
||||||
app_links_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: app_links_linux
|
|
||||||
sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.3"
|
|
||||||
app_links_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: app_links_platform_interface
|
|
||||||
sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
app_links_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: app_links_web
|
|
||||||
sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.4"
|
|
||||||
appwrite:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: appwrite
|
|
||||||
sha256: f5b8a4bfceb9c7b1cd380346863840fa6799eb515830bf04a9557424fdf92b23
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "13.1.1"
|
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: archive
|
name: archive
|
||||||
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
|
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.6.1"
|
version: "4.0.7"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -135,6 +95,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0"
|
version: "3.0.0"
|
||||||
|
azlistview:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: azlistview
|
||||||
|
sha256: "93e865f11777a271b439f0d6b00799c0797e9daeec2e082a2e01373809c4b90d"
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
barcode:
|
barcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -367,14 +335,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.2"
|
||||||
cookie_jar:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cookie_jar
|
|
||||||
sha256: a6ac027d3ed6ed756bfce8f3ff60cb479e266f3b0fdabd6242b804b6765e52de
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "4.0.8"
|
|
||||||
cross_file:
|
cross_file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -447,22 +407,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3"
|
version: "2.3.3"
|
||||||
device_info_plus:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: device_info_plus
|
|
||||||
sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "10.1.2"
|
|
||||||
device_info_plus_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: device_info_plus_platform_interface
|
|
||||||
sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "7.0.2"
|
|
||||||
dio:
|
dio:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -498,9 +442,20 @@ packages:
|
|||||||
easydevice:
|
easydevice:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "C:\\Users\\a\\Desktop\\blue\\easydevice"
|
path: "."
|
||||||
relative: false
|
ref: main
|
||||||
source: path
|
resolved-ref: f307495aac440031d119a728beaccf5d33003932
|
||||||
|
url: "https://gitea.wslpc.real.he-info.cn:94/flutter/easydevice.git"
|
||||||
|
source: git
|
||||||
|
version: "0.0.1"
|
||||||
|
easyweb:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "."
|
||||||
|
ref: e86d515f77
|
||||||
|
resolved-ref: e86d515f77a736a5e6f09036e5e022153cde425d
|
||||||
|
url: "https://gitea.wslpc.real.he-info.cn:94/flutter/easyweb.git"
|
||||||
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
ed25519_edwards:
|
ed25519_edwards:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
@@ -515,8 +470,8 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: main
|
ref: main
|
||||||
resolved-ref: "623980055c62d475ab13921d520eacac237ca070"
|
resolved-ref: "495112d603fbd9d72a709af1f728f14276be012e"
|
||||||
url: "http://admin@git.real.he-info.cn:8080/r/ef.git"
|
url: "https://gitea.wslpc.real.he-info.cn:94/flutter/ef.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
emoji_flag_converter:
|
emoji_flag_converter:
|
||||||
@@ -814,22 +769,6 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
flutter_web_auth_2:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: flutter_web_auth_2
|
|
||||||
sha256: "4d3d2fd3d26bf1a26b3beafd4b4b899c0ffe10dc99af25abc58ffe24e991133c"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.2"
|
|
||||||
flutter_web_auth_2_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: flutter_web_auth_2_platform_interface
|
|
||||||
sha256: e8669e262005a8354389ba2971f0fc1c36188481234ff50d013aaf993f30f739
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.0"
|
|
||||||
flutter_web_plugins:
|
flutter_web_plugins:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -876,14 +815,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
functions_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: functions_client
|
|
||||||
sha256: b410e4d609522357396cd84bb9a8f6e3a4561b5f7d3ce82267f6f1c2af42f16b
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.2"
|
|
||||||
geocoding:
|
geocoding:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1060,14 +991,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.6.0"
|
version: "1.6.0"
|
||||||
gotrue:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: gotrue
|
|
||||||
sha256: "04a6efacffd42773ed96dc752f19bb20a1fbc383e81ba82659072b775cf62912"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.12.0"
|
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1084,14 +1007,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.4"
|
version: "4.0.4"
|
||||||
gtk:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: gtk
|
|
||||||
sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.0"
|
|
||||||
html:
|
html:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1228,14 +1143,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.9.0"
|
version: "6.9.0"
|
||||||
jwt_decode:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: jwt_decode
|
|
||||||
sha256: d2e9f68c052b2225130977429d30f187aa1981d789c76ad104a32243cfdebfbb
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.1"
|
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1292,14 +1199,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
lottie:
|
lpinyin:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: lottie
|
name: lpinyin
|
||||||
sha256: fa39707f36786707b01eca7626d2c16c32aa603b3f3a146518518458847dc127
|
sha256: "0bb843363f1f65170efd09fbdfc760c7ec34fc6354f9fcb2f89e74866a0d814a"
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.0"
|
version: "2.0.3"
|
||||||
macros:
|
macros:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1404,15 +1311,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.2"
|
version: "5.0.2"
|
||||||
mongows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: main
|
|
||||||
resolved-ref: "7302210bd91f839b7ed63c6aa94af6c75f25c67a"
|
|
||||||
url: "https://gitea.wslpc.real.he-info.cn:94/flutter/mongows.git"
|
|
||||||
source: git
|
|
||||||
version: "0.10.3"
|
|
||||||
mqtt5_client:
|
mqtt5_client:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1693,14 +1591,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
postgrest:
|
posix:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: postgrest
|
name: posix
|
||||||
sha256: "10b81a23b1c829ccadf68c626b4d66666453a1474d24c563f313f5ca7851d575"
|
sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "6.0.2"
|
||||||
power_extensions:
|
power_extensions:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1765,14 +1663,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.3"
|
version: "2.2.3"
|
||||||
realtime_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: realtime_client
|
|
||||||
sha256: "3a0a99b5bd0fc3b35e8ee846d9a22fa2c2117f7ef1cb73d1e5f08f6c3d09c4e9"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.0"
|
|
||||||
redis:
|
redis:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1781,14 +1671,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
retry:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: retry
|
|
||||||
sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.2"
|
|
||||||
rfc_6901:
|
rfc_6901:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1837,6 +1719,14 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.0.3"
|
||||||
|
scrollable_positioned_list:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: scrollable_positioned_list
|
||||||
|
sha256: "9566352ab9ba05794ee6c8864f154afba5d36c5637d0e3e32c615ba4ceb92772"
|
||||||
|
url: "https://pub.flutter-io.cn"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.3"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -2026,14 +1916,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.2"
|
version: "3.2.2"
|
||||||
storage_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: storage_client
|
|
||||||
sha256: "09bac4d75eea58e8113ca928e6655a09cc8059e6d1b472ee801f01fde815bcfc"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.0"
|
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -2066,22 +1948,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.33"
|
version: "1.0.33"
|
||||||
supabase:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: supabase
|
|
||||||
sha256: f00172f5f0b2148ea1c573f52862d50cacb6f353f579f741fa35e51704845958
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
supabase_flutter:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: supabase_flutter
|
|
||||||
sha256: d88eccf9e46e57129725a08e72a3109b6f780921fdc27fe3d7669a11ae80906b
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.9.0"
|
|
||||||
syncfusion_flutter_core:
|
syncfusion_flutter_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -2450,22 +2316,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.10.1"
|
version: "5.10.1"
|
||||||
win32_registry:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: win32_registry
|
|
||||||
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.5"
|
|
||||||
window_to_front:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: window_to_front
|
|
||||||
sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee"
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "0.0.3"
|
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -2490,14 +2340,6 @@ packages:
|
|||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.flutter-io.cn"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.3"
|
||||||
yet_another_json_isolate:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: yet_another_json_isolate
|
|
||||||
sha256: fe45897501fa156ccefbfb9359c9462ce5dec092f05e8a56109db30be864f01e
|
|
||||||
url: "https://pub.flutter-io.cn"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.0"
|
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.5.4 <4.0.0"
|
dart: ">=3.5.4 <4.0.0"
|
||||||
flutter: ">=3.24.0"
|
flutter: ">=3.24.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user