更新消息回看功能
This commit is contained in:
@@ -56,17 +56,17 @@ class MessageController extends GetControllerEx<MessageModel> {
|
|||||||
}
|
}
|
||||||
String queryUrl =
|
String queryUrl =
|
||||||
"${serviceAddress}${serviceName}${serviceApi}?type=${messageType}";
|
"${serviceAddress}${serviceName}${serviceApi}?type=${messageType}";
|
||||||
String? language = "";
|
String? language = "";
|
||||||
if (languageController.selectLanguage != null) {
|
if (languageController.selectLanguage != null) {
|
||||||
language = languageController.selectLanguage.value!.language_code;
|
language = languageController.selectLanguage.value!.language_code;
|
||||||
}
|
}
|
||||||
if (language != null && language.isNotEmpty) {
|
if (language != null && language.isNotEmpty) {
|
||||||
if (queryUrl.contains("?")) {
|
if (queryUrl.contains("?")) {
|
||||||
queryUrl += "&lang=$language";
|
queryUrl += "&lang=$language";
|
||||||
} else {
|
} else {
|
||||||
queryUrl += "?lang=$language";
|
queryUrl += "?lang=$language";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var response = await EasyDartModule.dio.get(queryUrl);
|
var response = await EasyDartModule.dio.get(queryUrl);
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
var responseData =
|
var responseData =
|
||||||
@@ -101,16 +101,16 @@ class MessageController extends GetControllerEx<MessageModel> {
|
|||||||
|
|
||||||
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
||||||
String? language = "";
|
String? language = "";
|
||||||
if (languageController.selectLanguage != null) {
|
if (languageController.selectLanguage != null) {
|
||||||
language = languageController.selectLanguage.value!.language_code;
|
language = languageController.selectLanguage.value!.language_code;
|
||||||
}
|
}
|
||||||
if (language != null && language.isNotEmpty) {
|
if (language != null && language.isNotEmpty) {
|
||||||
if (queryUrl.contains("?")) {
|
if (queryUrl.contains("?")) {
|
||||||
queryUrl += "&lang=$language";
|
queryUrl += "&lang=$language";
|
||||||
} else {
|
} else {
|
||||||
queryUrl += "?lang=$language";
|
queryUrl += "?lang=$language";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var response = await EasyDartModule.dio.get(queryUrl);
|
var response = await EasyDartModule.dio.get(queryUrl);
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
var responseData =
|
var responseData =
|
||||||
@@ -135,7 +135,7 @@ class MessageController extends GetControllerEx<MessageModel> {
|
|||||||
orElse: () => null,
|
orElse: () => null,
|
||||||
);
|
);
|
||||||
model.system_message_read = systemItem?['count'] ?? 0;
|
model.system_message_read = systemItem?['count'] ?? 0;
|
||||||
|
|
||||||
updateAll();
|
updateAll();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -166,17 +166,17 @@ class MessageController extends GetControllerEx<MessageModel> {
|
|||||||
queryUrl += "?type=$type";
|
queryUrl += "?type=$type";
|
||||||
}
|
}
|
||||||
|
|
||||||
String? language = "";
|
String? language = "";
|
||||||
if (languageController.selectLanguage != null) {
|
if (languageController.selectLanguage != null) {
|
||||||
language = languageController.selectLanguage.value!.language_code;
|
language = languageController.selectLanguage.value!.language_code;
|
||||||
}
|
}
|
||||||
if (language != null && language.isNotEmpty) {
|
if (language != null && language.isNotEmpty) {
|
||||||
if (queryUrl.contains("?")) {
|
if (queryUrl.contains("?")) {
|
||||||
queryUrl += "&lang=$language";
|
queryUrl += "&lang=$language";
|
||||||
} else {
|
} else {
|
||||||
queryUrl += "?lang=$language";
|
queryUrl += "?lang=$language";
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
var response = await EasyDartModule.dio.post(queryUrl);
|
var response = await EasyDartModule.dio.post(queryUrl);
|
||||||
|
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
|
|||||||
35
lib/controller/message/message_review_controller.dart
Normal file
35
lib/controller/message/message_review_controller.dart
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'message_review_controller.g.dart'; // 由json_serializable自动生成的部分
|
||||||
|
|
||||||
|
@JsonSerializable()
|
||||||
|
class MessageReviewModel {
|
||||||
|
int? type = 1; //设备类型 1:体征消息 2.系统消息
|
||||||
|
|
||||||
|
MessageReviewModel();
|
||||||
|
|
||||||
|
// 从JSON反序列化时的异常处理
|
||||||
|
|
||||||
|
factory MessageReviewModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
try {
|
||||||
|
return _$MessageReviewModelFromJson(json);
|
||||||
|
} catch (e) {
|
||||||
|
// 在实际应用中,应该有更细致的异常处理策略和错误日志
|
||||||
|
return MessageReviewModel(); // 或者返回一个带有错误信息的特定DeviceInfoModel实例
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 序列化为JSON时的异常处理
|
||||||
|
Map<String, dynamic> toJson() => _$MessageReviewModelToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
class MessageReviewController extends GetControllerEx<MessageReviewModel> {
|
||||||
|
MessageReviewModel() {
|
||||||
|
attr = GetModel(MessageReviewModel()).obs;
|
||||||
|
}
|
||||||
|
|
||||||
|
RxList messageList = [].obs;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
15
lib/controller/message/message_review_controller.g.dart
Normal file
15
lib/controller/message/message_review_controller.g.dart
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'message_review_controller.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// JsonSerializableGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
MessageReviewModel _$MessageReviewModelFromJson(Map<String, dynamic> json) =>
|
||||||
|
MessageReviewModel()..type = (json['type'] as num?)?.toInt();
|
||||||
|
|
||||||
|
Map<String, dynamic> _$MessageReviewModelToJson(MessageReviewModel instance) =>
|
||||||
|
<String, dynamic>{
|
||||||
|
'type': instance.type,
|
||||||
|
};
|
||||||
@@ -28,6 +28,7 @@ import 'package:vbvs_app/controller/login/login_controller.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/main_bottom/main_page_controller.dart';
|
import 'package:vbvs_app/controller/main_bottom/main_page_controller.dart';
|
||||||
import 'package:vbvs_app/controller/message/message_controller.dart';
|
import 'package:vbvs_app/controller/message/message_controller.dart';
|
||||||
|
import 'package:vbvs_app/controller/message/message_review_controller.dart';
|
||||||
import 'package:vbvs_app/controller/person/person_controller.dart';
|
import 'package:vbvs_app/controller/person/person_controller.dart';
|
||||||
import 'package:vbvs_app/controller/repair/repair_controller.dart';
|
import 'package:vbvs_app/controller/repair/repair_controller.dart';
|
||||||
import 'package:vbvs_app/controller/setting/language/language_controller.dart';
|
import 'package:vbvs_app/controller/setting/language/language_controller.dart';
|
||||||
@@ -245,6 +246,7 @@ class MyApp extends StatelessWidget {
|
|||||||
Get.lazyPut(() => PrivacyPdfController()),
|
Get.lazyPut(() => PrivacyPdfController()),
|
||||||
Get.lazyPut(() => CalendarController()),
|
Get.lazyPut(() => CalendarController()),
|
||||||
Get.lazyPut(() => SleepReportController()),
|
Get.lazyPut(() => SleepReportController()),
|
||||||
|
Get.lazyPut(() => MessageReviewController()),
|
||||||
]));
|
]));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
156
lib/pages/device/component/ReviewMessageWidgetWidget.dart
Normal file
156
lib/pages/device/component/ReviewMessageWidgetWidget.dart
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
import 'package:ef/ef.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
|
import 'package:vbvs_app/common/util/FitTool.dart';
|
||||||
|
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
|
||||||
|
import 'package:vbvs_app/controller/device/device_share_controller.dart';
|
||||||
|
import 'package:vbvs_app/controller/message/message_controller.dart';
|
||||||
|
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
|
||||||
|
import 'package:vbvs_app/enum/MessageStatus.dart';
|
||||||
|
|
||||||
|
class ReviewMessageWidgetWidget extends StatefulWidget {
|
||||||
|
final data;
|
||||||
|
|
||||||
|
const ReviewMessageWidgetWidget({super.key, required this.data});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<ReviewMessageWidgetWidget> createState() =>
|
||||||
|
_ReviewMessageWidgetWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ReviewMessageWidgetWidgetState extends State<ReviewMessageWidgetWidget> {
|
||||||
|
ThemeController themeController = Get.find();
|
||||||
|
MessageController messageController = Get.find();
|
||||||
|
DeviceShareController deviceShareController = Get.find();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var messageInfo = widget.data;
|
||||||
|
return ClickableContainer(
|
||||||
|
backgroundColor: themeController.currentColor.sc5,
|
||||||
|
highlightColor: themeController.currentColor.sc3,
|
||||||
|
borderRadius: 20.rpx,
|
||||||
|
padding: EdgeInsetsDirectional.fromSTEB(31.rpx, 33.rpx, 0.rpx, 33.rpx),
|
||||||
|
onTap: () {},
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
minHeight: 66.rpx,
|
||||||
|
),
|
||||||
|
child: Align(
|
||||||
|
alignment: AlignmentDirectional(-1, 0),
|
||||||
|
child: Text(
|
||||||
|
// '实时监测结果通知'.tr,
|
||||||
|
"${messageInfo['data']!['title']}",
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily: 'Inter',
|
||||||
|
fontSize: 30.rpx,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
color: themeController.currentColor.sc3,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
minWidth: 30.rpx,
|
||||||
|
maxWidth: 140.rpx,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: messageInfo['data']['val']
|
||||||
|
.map<Widget>((mapItem) =>
|
||||||
|
_buildInfoItem(context, mapItem['k'] ?? ''))
|
||||||
|
.toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
minWidth: 30.rpx,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: messageInfo['data']['val']
|
||||||
|
.map<Widget>((mapItem) =>
|
||||||
|
_buildValueItem(context, mapItem['v'] ?? ''))
|
||||||
|
.toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
].divide(SizedBox(width: 35.rpx)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildInfoItem(BuildContext context, String label) {
|
||||||
|
return Container(
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
minHeight: 62.rpx,
|
||||||
|
),
|
||||||
|
child: Align(
|
||||||
|
alignment: AlignmentDirectional(-1, 0),
|
||||||
|
child: Text(
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
maxLines: 1,
|
||||||
|
label.tr,
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily: 'Inter',
|
||||||
|
fontSize: 26.rpx,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
color: themeController.currentColor.sc4,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildValueItem(BuildContext context, String value) {
|
||||||
|
return Container(
|
||||||
|
constraints: BoxConstraints(
|
||||||
|
minHeight: 62.rpx,
|
||||||
|
),
|
||||||
|
child: Align(
|
||||||
|
alignment: AlignmentDirectional(-1, 0),
|
||||||
|
child: Text(
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
maxLines: 1,
|
||||||
|
value,
|
||||||
|
style: FlutterFlowTheme.of(context).bodyMedium.override(
|
||||||
|
fontFamily: 'Inter',
|
||||||
|
fontSize: 26.rpx,
|
||||||
|
letterSpacing: 0.0,
|
||||||
|
color: themeController.currentColor.sc3,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String getMessageStatus(int status) {
|
||||||
|
if (status == null) {
|
||||||
|
return '未知数据'.tr;
|
||||||
|
}
|
||||||
|
if (status == MessageStatus.noNeed.code) {
|
||||||
|
return '无需处理'.tr;
|
||||||
|
}
|
||||||
|
if (status == MessageStatus.pending.code) {
|
||||||
|
return "待处理".tr;
|
||||||
|
}
|
||||||
|
if (status == MessageStatus.completed.code) {
|
||||||
|
return "已处理".tr;
|
||||||
|
}
|
||||||
|
if (status == MessageStatus.timeout.code) {
|
||||||
|
return "已超时".tr;
|
||||||
|
}
|
||||||
|
return '未知数据'.tr;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,13 @@
|
|||||||
import 'package:ef/ef.dart';
|
import 'package:ef/ef.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
import 'package:flutterflow_ui/flutterflow_ui.dart';
|
||||||
import 'package:vbvs_app/common/color/ServiceConstant.dart';
|
|
||||||
import 'package:vbvs_app/common/color/appConstants.dart';
|
import 'package:vbvs_app/common/color/appConstants.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/common/util/requestWithLog.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/controller/repair/repair_controller.dart';
|
import 'package:vbvs_app/controller/message/message_review_controller.dart';
|
||||||
import 'package:vbvs_app/model/api_response.dart';
|
import 'package:vbvs_app/pages/device/component/ReviewMessageWidgetWidget.dart';
|
||||||
import 'package:vbvs_app/pages/repair/component/RepairHistoryInfoWidget.dart';
|
|
||||||
|
|
||||||
class MessageReviewPage extends StatefulWidget {
|
class MessageReviewPage extends StatefulWidget {
|
||||||
var data; //1.绑定时 2.绑定后
|
var data; //1.绑定时 2.绑定后
|
||||||
@@ -21,7 +18,7 @@ class MessageReviewPage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MessageReviewPageState extends State<MessageReviewPage> {
|
class _MessageReviewPageState extends State<MessageReviewPage> {
|
||||||
RepairController repairController = Get.find();
|
MessageReviewController messageReviewController = Get.find();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@@ -76,21 +73,6 @@ class _MessageReviewPageState extends State<MessageReviewPage> {
|
|||||||
// child: returnIconButtom,
|
// child: returnIconButtom,
|
||||||
child: returnIconButtomAddCallback(() {}),
|
child: returnIconButtomAddCallback(() {}),
|
||||||
),
|
),
|
||||||
// Positioned(
|
|
||||||
// right: 20.rpx,
|
|
||||||
// child: ClickableContainer(
|
|
||||||
// backgroundColor: Colors.transparent,
|
|
||||||
// highlightColor: themeController.currentColor.sc16,
|
|
||||||
// padding: EdgeInsets.all(8.rpx),
|
|
||||||
// onTap: () {},
|
|
||||||
// child: SvgPicture.asset(
|
|
||||||
// 'assets/img/icon/history.svg',
|
|
||||||
// width: 39.rpx,
|
|
||||||
// height: 39.rpx,
|
|
||||||
// color: themeController.currentColor.sc16,
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -102,28 +84,11 @@ class _MessageReviewPageState extends State<MessageReviewPage> {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding:
|
padding:
|
||||||
EdgeInsetsDirectional.fromSTEB(30.rpx, 29.rpx, 30.rpx, 0),
|
EdgeInsetsDirectional.fromSTEB(30.rpx, 29.rpx, 30.rpx, 0),
|
||||||
// child: Obx(() {
|
|
||||||
// final isEmpty = repairController.repairHistory.value.isEmpty;
|
|
||||||
// if (isEmpty) {
|
|
||||||
// return Expanded(child: NullDataWidget());
|
|
||||||
// }
|
|
||||||
// return SingleChildScrollView(
|
|
||||||
// child: Column(
|
|
||||||
// mainAxisSize: MainAxisSize.max,
|
|
||||||
// children: repairController.repairHistory.value
|
|
||||||
// .map((item) => RepairHistoryInfoWidget(
|
|
||||||
// data: item)) // 假设组件支持传 data
|
|
||||||
// .toList()
|
|
||||||
// .divide(SizedBox(height: 25.rpx))
|
|
||||||
// .addToEnd(SizedBox(height: 25.rpx)),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
// }),
|
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsetsDirectional.fromSTEB(
|
padding: EdgeInsetsDirectional.fromSTEB(
|
||||||
0.rpx, 0.rpx, 0.rpx, 120.rpx),
|
0.rpx, 0.rpx, 0.rpx, 26.rpx),
|
||||||
child: ClickableContainer(
|
child: ClickableContainer(
|
||||||
backgroundColor: themeController.currentColor.sc5,
|
backgroundColor: themeController.currentColor.sc5,
|
||||||
highlightColor:
|
highlightColor:
|
||||||
@@ -294,6 +259,14 @@ class _MessageReviewPageState extends State<MessageReviewPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Obx(() {
|
||||||
|
final list = messageReviewController.messageList.value;
|
||||||
|
return list.isEmpty
|
||||||
|
? const NullDataWidget()
|
||||||
|
: _buildMessageListView(list);
|
||||||
|
}),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -305,14 +278,76 @@ class _MessageReviewPageState extends State<MessageReviewPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> loadData() async {
|
Future<void> loadData() async {
|
||||||
String serviceAddress = ServiceConstant.service_address;
|
//todo 请求历史体征数据
|
||||||
String serviceName = ServiceConstant.server_service;
|
// String serviceAddress = ServiceConstant.service_address;
|
||||||
String serviceApi = ServiceConstant.submit_repair;
|
// String serviceName = ServiceConstant.server_service;
|
||||||
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
// String serviceApi = ServiceConstant.submit_repair;
|
||||||
ApiResponse apiResponse = await requestWithLog(
|
// String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
|
||||||
logTitle: "查询报修数据", method: MyHttpMethod.get, queryUrl: queryUrl);
|
// ApiResponse apiResponse = await requestWithLog(
|
||||||
RepairController repairController = Get.find();
|
// logTitle: "查询报修数据", method: MyHttpMethod.get, queryUrl: queryUrl);
|
||||||
repairController.repairHistory.value = apiResponse.data;
|
// RepairController repairController = Get.find();
|
||||||
repairController.updateAll();
|
// repairController.repairHistory.value = apiResponse.data;
|
||||||
|
// repairController.updateAll();
|
||||||
|
messageReviewController.messageList.value = [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"title": "实时监测结果通知",
|
||||||
|
'val': [
|
||||||
|
{'k': '消息类型', 'v': '心率异常'},
|
||||||
|
{'k': '检测数值', 'v': '106'},
|
||||||
|
{'k': '发生时间', 'v': '2024-07-30 01:15'},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"title": "实时监测结果通知",
|
||||||
|
'val': [
|
||||||
|
{'k': '消息类型', 'v': '心率异常'},
|
||||||
|
{'k': '检测数值', 'v': '106'},
|
||||||
|
{'k': '发生时间', 'v': '2024-07-30 01:15'},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"title": "实时监测结果通知",
|
||||||
|
'val': [
|
||||||
|
{'k': '消息类型', 'v': '心率异常'},
|
||||||
|
{'k': '检测数值', 'v': '106'},
|
||||||
|
{'k': '发生时间', 'v': '2024-07-30 01:15'},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"title": "实时监测结果通知",
|
||||||
|
'val': [
|
||||||
|
{'k': '消息类型', 'v': '心率异常'},
|
||||||
|
{'k': '检测数值', 'v': '106'},
|
||||||
|
{'k': '发生时间', 'v': '2024-07-30 01:15'},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _buildMessageListView(List dataList) {
|
||||||
|
return Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 0.rpx),
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(height: 30.rpx),
|
||||||
|
...dataList
|
||||||
|
.map((item) => ReviewMessageWidgetWidget(data: item))
|
||||||
|
.toList()
|
||||||
|
.divide(SizedBox(height: 30.rpx)),
|
||||||
|
SizedBox(height: 30.rpx),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user