|
@@ -5,6 +5,8 @@ import 'dart:ui';
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
+import 'package:vitalapp/pages/medical/controller.dart';
|
|
|
+import 'package:vitalapp/pages/medical/widgets/twelve_ecg_view/state.dart';
|
|
|
import 'package:vitalapp/pages/medical/widgets/twelve_ecg_view/widgets/grid_background_printer_for_five.dart';
|
|
|
import 'dart:ui' as ui;
|
|
|
import 'index.dart';
|
|
@@ -14,6 +16,8 @@ class TwelveEcgViewController extends GetxController {
|
|
|
required this.initPoints,
|
|
|
});
|
|
|
|
|
|
+ final state = TwelveEcgState();
|
|
|
+ final MedicalController medicalController = Get.find<MedicalController>();
|
|
|
List<int> initPoints;
|
|
|
|
|
|
/// 每秒的数据量
|
|
@@ -147,7 +151,8 @@ class TwelveEcgViewController extends GetxController {
|
|
|
allPoints: allPoints,
|
|
|
yMaxList: yMaxList,
|
|
|
);
|
|
|
- final bgPainter = GridBackgroundPainterForAll();
|
|
|
+ final bgPainter =
|
|
|
+ GridBackgroundPainterForAll(rangeValues: state.rangeValues);
|
|
|
const size = Size(5000, 650);
|
|
|
// 使用离屏Canvas绘制
|
|
|
final Uint8List? bytes =
|
|
@@ -168,10 +173,24 @@ class TwelveEcgViewController extends GetxController {
|
|
|
return chunks;
|
|
|
}
|
|
|
|
|
|
+ List<List<int>> splitArrayIntoChunks2() {
|
|
|
+ List<List<int>> chunks = [];
|
|
|
+ var satrtPoint = (allPoints.length * (state.rangeValues.start / 30)).ceil();
|
|
|
+ var dataLength = (allPoints.length *
|
|
|
+ ((state.rangeValues.end - state.rangeValues.start) / 30))
|
|
|
+ .ceil();
|
|
|
+ chunks.add(allPoints.sublist(satrtPoint, satrtPoint + dataLength));
|
|
|
+ return chunks;
|
|
|
+ }
|
|
|
+
|
|
|
+ updateEcgImage() async {
|
|
|
+ medicalController.diagnosisDataValue['TwelveHeart']?['ECG12'] =
|
|
|
+ await getFiveImageBase64();
|
|
|
+ }
|
|
|
+
|
|
|
/// 获取五秒图心电图的base64(带base64头)
|
|
|
Future<String> getFiveImageBase64() async {
|
|
|
- int chunkSize = (allPoints.length / 5).ceil();
|
|
|
- List<List<int>> chunks = splitArrayIntoChunks(allPoints, chunkSize);
|
|
|
+ List<List<int>> chunks = splitArrayIntoChunks2();
|
|
|
List<int> lastChunk = chunks.last;
|
|
|
|
|
|
final painter = EcgPainterForAll(
|