exam_urinalys.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import 'package:flutter/material.dart';
  2. import 'package:vitalapp/components/dialog_input.dart';
  3. import 'package:vitalapp/pages/check/widgets/exam_configurable/exam_card.dart';
  4. /// 尿常规
  5. class ExamUrinalysis extends StatefulWidget {
  6. const ExamUrinalysis({
  7. super.key,
  8. required this.currentValue,
  9. required this.urinalysis,
  10. });
  11. final Map currentValue;
  12. final Function(Map) urinalysis;
  13. @override
  14. State<ExamUrinalysis> createState() => _ExamUrinalysisState();
  15. }
  16. class _ExamUrinalysisState extends State<ExamUrinalysis> {
  17. List<Map<String, String>> urinalysis = [
  18. {"name": '尿白细胞', "key": 'LEU'},
  19. {"name": '红细胞/潜血', "key": 'BLD'},
  20. {"name": '尿亚硝酸盐', "key": 'NIT'},
  21. {"name": '酮体', "key": 'KET'},
  22. {"name": '尿胆原', "key": 'UBG'},
  23. {"name": '胆红素', "key": 'BIL'},
  24. {"name": '尿蛋白', "key": 'PRO'},
  25. {"name": '葡萄糖', "key": 'GLU'},
  26. {"name": '酸碱度', "key": 'PH'},
  27. {"name": '尿比重', "key": 'SG'},
  28. {"name": '维生素C', "key": 'VC'},
  29. ];
  30. Map _value = {};
  31. @override
  32. void initState() {
  33. initData();
  34. super.initState();
  35. }
  36. @override
  37. void didUpdateWidget(ExamUrinalysis oldWidget) {
  38. initData();
  39. super.didUpdateWidget(oldWidget);
  40. }
  41. void initData() {
  42. _value = widget.currentValue;
  43. setState(() {});
  44. }
  45. @override
  46. void dispose() {
  47. super.dispose();
  48. }
  49. @override
  50. Widget build(BuildContext context) {
  51. return Stack(
  52. children: [
  53. _buildUrinalysis(),
  54. ],
  55. );
  56. }
  57. Widget _buildUrinalysis() {
  58. return ExamCard(
  59. title: '尿常规',
  60. // clickCard: () {
  61. // _input();
  62. // },
  63. content: Container(
  64. width: double.infinity,
  65. alignment: Alignment.center,
  66. padding: const EdgeInsets.only(
  67. bottom: 20,
  68. right: 30,
  69. left: 40,
  70. ),
  71. // constraints: const BoxConstraints(minHeight: 50),
  72. child: GridView.count(
  73. shrinkWrap: true,
  74. childAspectRatio: 12,
  75. crossAxisCount: 2, // 列数为2,即两列布局
  76. children: urinalysis.map((item) {
  77. return _buildUrineItem(item);
  78. }).toList(),
  79. ),
  80. ),
  81. );
  82. }
  83. Widget _buildUrineItem(Map<String, String> urine) {
  84. return InkWell(
  85. onTap: () {
  86. _input(urine['name']!, urine['key']!);
  87. },
  88. child: Container(
  89. child: Row(
  90. mainAxisAlignment: MainAxisAlignment.start,
  91. crossAxisAlignment: CrossAxisAlignment.center,
  92. children: [
  93. Container(
  94. alignment: Alignment.center,
  95. width: 180,
  96. child: Row(
  97. children: [
  98. Text(
  99. urine['key']!,
  100. style: const TextStyle(
  101. fontSize: 22,
  102. color: Colors.black,
  103. ),
  104. ),
  105. Text(
  106. '(${urine['name']!})',
  107. // text: _value.isEmpty ? '--' : _value,
  108. textAlign: TextAlign.center,
  109. style: const TextStyle(
  110. fontSize: 22,
  111. ),
  112. ),
  113. ],
  114. ),
  115. ),
  116. Text(
  117. _value[urine['key']!] ?? '',
  118. // text: _value.isEmpty ? '--' : _value,
  119. style: const TextStyle(
  120. fontSize: 26,
  121. ),
  122. )
  123. ],
  124. ),
  125. ),
  126. );
  127. }
  128. Future<void> _input(String name, String key) async {
  129. String? result = await VDialogInput(
  130. title: name,
  131. initialValue: _value[key],
  132. ).show();
  133. if (result?.isNotEmpty ?? false) {
  134. _value[key] = result ?? '';
  135. }
  136. widget.urinalysis(_value);
  137. setState(() {});
  138. }
  139. }