|
@@ -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,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|