view.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import 'package:vitalapp/pages/medical/widgets/ecg_view/widgets/debug_dialog.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'index.dart';
  5. class EcgView extends GetView<EcgViewController> {
  6. const EcgView(
  7. {Key? key,
  8. required this.width,
  9. required this.height,
  10. required this.initData})
  11. : super(key: key);
  12. final double width;
  13. final double height;
  14. final List<int> initData;
  15. // 主视图
  16. Widget _buildView() {
  17. return Center(
  18. child: ClipRect(
  19. child: CustomPaint(
  20. foregroundPainter: EcgPainter(
  21. newPoints: controller.newPointsToDraw,
  22. oldPoints: controller.oldPointsToDraw,
  23. xDataCount: controller.xDataCount,
  24. yMax: 300,
  25. ),
  26. painter: GridBackgroundPainter(3 * 25),
  27. size: Size(width, height),
  28. ),
  29. ),
  30. );
  31. }
  32. @override
  33. Widget build(BuildContext context) {
  34. return GetBuilder<EcgViewController>(
  35. init: EcgViewController(initPoints: initData),
  36. id: "ecg_view",
  37. builder: (_) {
  38. return GestureDetector(
  39. onTap: () => controller.openFullScreenDialog(),
  40. onDoubleTap: () async {
  41. final imageBase64 = await controller.getFullDataImageBase64();
  42. if (imageBase64.isNotEmpty) {
  43. Get.dialog(
  44. DebugDialog(imageBase64: imageBase64),
  45. );
  46. }
  47. },
  48. child: Center(
  49. child: _buildView(),
  50. ),
  51. );
  52. },
  53. );
  54. }
  55. }