瀏覽代碼

1、fixed:0016791: 优化点:1、健康检测页面:12导“改成“十二导”;2、心电检测结论改为心电检测提示;3、诊断提示改为检测提示;4、最近检测记录:放大后的心电图和健康检测页面的放大效果保持一致

guanxinyi 1 年之前
父節點
當前提交
29d8d02f8d

+ 86 - 0
lib/components/dialog_ecg_image.dart

@@ -0,0 +1,86 @@
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+
+class EcgImageDialog extends StatelessWidget {
+  const EcgImageDialog({Key? key, required this.image}) : super(key: key);
+
+  final Image image;
+
+  // 主视图
+  Widget _buildView() {
+    const designWidth = 1280.0; // 设计尺寸宽度:1280
+    final width = Get.width;
+    final scale = width / designWidth; // 计算缩放比例
+    final ScrollController scrollController = ScrollController();
+    return Container(
+      width: Get.width * 0.9 / scale,
+      height: 240 * 3,
+      decoration: BoxDecoration(
+        color: Colors.white,
+        borderRadius: BorderRadius.circular(10),
+      ),
+      clipBehavior: Clip.antiAlias,
+      child: Column(
+        children: [
+          _buildHead(),
+          Expanded(
+            child: Scrollbar(
+              thumbVisibility: true,
+              thickness: 10,
+              radius: const Radius.circular(10),
+              controller: scrollController,
+              child: SingleChildScrollView(
+                controller: scrollController,
+                padding: const EdgeInsets.only(left: 10, right: 10, bottom: 20),
+                physics: const BouncingScrollPhysics(),
+                scrollDirection: Axis.horizontal,
+                child: Center(
+                  child: image,
+                ),
+              ),
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
+  // Widget displayImage(String base64Url) {
+  //   // 去掉"data:image/png;base64,"前缀
+  //   String base64Image = base64Url.split(',').last;
+
+  //   // 解码Base64字符串为字节数组
+  //   Uint8List imageData = base64Decode(base64Image);
+
+  //   return Image.memory(
+  //     imageData,
+  //     fit: BoxFit.cover, // 根据需要设置适当的fit属性
+  //   );
+  // }
+
+  @override
+  Widget build(BuildContext context) {
+    return Dialog(
+      child: _buildView(),
+    );
+  }
+
+  /// 构建弹窗顶部,右侧显示关闭按钮
+  Widget _buildHead() {
+    return SizedBox(
+      height: 50,
+      child: Row(
+        mainAxisAlignment: MainAxisAlignment.end,
+        children: [
+          IconButton(
+            onPressed: () => Get.back(),
+            icon: const Icon(
+              Icons.close,
+              size: 30,
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 3 - 27
lib/components/dialog_table.dart

@@ -3,6 +3,7 @@ import 'dart:convert';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:get/get.dart';
+import 'package:vitalapp/components/dialog_ecg_image.dart';
 import 'package:vnote_device_plugin/models/exams/twelve_heart.dart';
 
 import '../pages/medical/widgets/twelve_ecg_view/widgets/conclusion_dialog.dart';
@@ -178,10 +179,11 @@ class VDialogTable extends StatelessWidget {
           onTap: () {
             print(title);
             Get.dialog(
-              ImagePreviewDialog(
+              EcgImageDialog(
                 image: isExistLocalData!
                     ? Image.memory(
                         imageBytes,
+                        fit: BoxFit.cover, // 根据需要设置适当的fit属性
                       )
                     : Image.network(title),
               ),
@@ -252,29 +254,3 @@ class VDialogTable extends StatelessWidget {
     );
   }
 }
-
-class ImagePreviewDialog extends StatelessWidget {
-  final Image image;
-
-  const ImagePreviewDialog({super.key, required this.image});
-
-  @override
-  Widget build(BuildContext context) {
-    return Dialog(
-      child: SizedBox(
-        width: 800,
-        height: 500,
-        child: SizedBox(
-          width: double.maxFinite,
-          child: ListView(
-            scrollDirection: Axis.horizontal,
-            children: [
-              image,
-              // 添加更多的图片
-            ],
-          ),
-        ),
-      ),
-    );
-  }
-}

+ 3 - 4
lib/pages/patient/detail/widgets/last_record.dart

@@ -3,7 +3,7 @@ import 'dart:convert';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:get/get.dart';
-import 'package:vitalapp/components/dialog_table.dart';
+import 'package:vitalapp/components/dialog_ecg_image.dart';
 import 'package:vitalapp/pages/medical/widgets/twelve_ecg_view/widgets/conclusion_dialog.dart';
 import 'package:vnote_device_plugin/models/exams/twelve_heart.dart';
 
@@ -198,15 +198,14 @@ class LastRecordTable extends StatelessWidget {
           onTap: () {
             print(title);
             Get.dialog(
-              ImagePreviewDialog(
+              EcgImageDialog(
                 image: isExistLocalData!
                     ? Image.memory(
                         imageBytes,
                       )
                     : Image.network(
                         title,
-                        height: 100,
-                        // fit: BoxFit.cover,
+                        fit: BoxFit.cover,
                       ),
               ),
             );