view.dart 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. import 'package:fis_common/event/event_type.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/pages/check/examination/controller.dart';
  5. import 'package:vitalapp/pages/check/models/form.dart';
  6. // import 'package:vitalapp/pages/check/widgets/configurable_card.dart';
  7. import 'package:vitalapp/pages/check/widgets/new_configurable_card.dart';
  8. class ExaminationPage extends StatefulWidget {
  9. const ExaminationPage({
  10. Key? key,
  11. required this.idCard,
  12. required this.onSubmitEvent,
  13. required this.physicalExamNumber,
  14. this.examData,
  15. }) : super(key: key);
  16. final FEventHandler<bool> onSubmitEvent;
  17. final String idCard;
  18. final String physicalExamNumber;
  19. final String? examData;
  20. @override
  21. State<ExaminationPage> createState() => _ExaminationPageState();
  22. }
  23. class _ExaminationPageState extends State<ExaminationPage> {
  24. final controller = Get.find<ExaminationController>();
  25. String _cardKey = "ZZYBZK";
  26. FEventHandler<bool> onChangeCurrentKeyEvent = FEventHandler<bool>();
  27. bool _isAllSelectZQCT = false;
  28. @override
  29. void initState() {
  30. onChangeCurrentKeyEvent.addListener(changeCurrentKeyEvent);
  31. super.initState();
  32. }
  33. @override
  34. void dispose() {
  35. onChangeCurrentKeyEvent.removeListener(changeCurrentKeyEvent);
  36. super.dispose();
  37. }
  38. @override
  39. Widget build(BuildContext context) {
  40. return Scaffold(
  41. backgroundColor: const Color.fromRGBO(238, 238, 238, 1),
  42. body: DefaultTextStyle(
  43. style: TextStyle(
  44. fontFamily: "NotoSansSC",
  45. fontFamilyFallback: const ["NotoSansSC"],
  46. fontSize: 20.0,
  47. color: Colors.black,
  48. ),
  49. child: Row(
  50. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  51. children: [
  52. Stack(
  53. children: [
  54. _buildExamList(),
  55. ],
  56. ),
  57. Expanded(
  58. child: NewConfigurableCard(
  59. key: UniqueKey(),
  60. onSubmitEvent: widget.onSubmitEvent,
  61. onChangeCurrentKeyEvent: onChangeCurrentKeyEvent,
  62. cardKey: _cardKey,
  63. isAllSelectZQCT: _isAllSelectZQCT,
  64. onAllSelectZQCTChange: (value) {
  65. _isAllSelectZQCT = value;
  66. },
  67. callBack: (key, templateCode, data, isMuanual) async {
  68. await controller.createOrUpdateExam(
  69. key,
  70. templateCode,
  71. data,
  72. isMuanual,
  73. );
  74. return true;
  75. },
  76. patientCode: widget.idCard,
  77. physicalExamNumber: widget.physicalExamNumber,
  78. ),
  79. ),
  80. ],
  81. ),
  82. ));
  83. }
  84. Widget _buildExamList() {
  85. return Container(
  86. margin: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
  87. child: Column(
  88. crossAxisAlignment: CrossAxisAlignment.start,
  89. children: controller.menuList
  90. .map(
  91. (e) => InkWell(
  92. onTap: () {
  93. widget.onSubmitEvent.emit(this, false);
  94. _cardKey = e.value;
  95. setState(() {});
  96. },
  97. child: Container(
  98. margin: EdgeInsets.all(8),
  99. padding: EdgeInsets.all(8),
  100. width: 200,
  101. decoration: BoxDecoration(
  102. color: _cardKey == e.value ? Colors.blue : Colors.white,
  103. borderRadius: BorderRadius.all(
  104. Radius.circular(8),
  105. ),
  106. ),
  107. child: Text(
  108. e.label,
  109. style: TextStyle(
  110. fontSize: 20,
  111. color: _cardKey == e.value ? Colors.white : Colors.black,
  112. ),
  113. ),
  114. ),
  115. ),
  116. )
  117. .toList(),
  118. ),
  119. );
  120. }
  121. void changeCurrentKeyEvent(sender, e) {
  122. if (e) {
  123. MenuItem? currentKey = controller.menuList
  124. .firstWhereOrNull((element) => element.value == _cardKey);
  125. if (currentKey != null) {
  126. int currentIndex = controller.menuList.indexOf(currentKey);
  127. if (currentIndex < controller.menuList.length - 1) {
  128. widget.onSubmitEvent.emit(this, false);
  129. _cardKey = controller.menuList[currentIndex + 1].value;
  130. setState(() {});
  131. }
  132. }
  133. }
  134. }
  135. }