carotid_measure_tool.dart 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  2. import 'package:fis_measure/interfaces/process/items/terms.dart';
  3. import 'package:fis_measure/interfaces/process/items/types.dart';
  4. import 'package:fis_measure/process/workspace/measure_3d_view_controller.dart';
  5. import 'package:fis_measure/view/measure/measure_tool.dart';
  6. import 'package:fis_ui/index.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:get/get.dart';
  9. import 'package:vid/us/vid_us_unit.dart';
  10. /// 颈动脉测量项页面(继承自 测量项页面)
  11. class CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasure {
  12. const CarotidLeftSiderSelectMeasure({Key? key}) : super(key: key);
  13. @override
  14. FState<LeftSiderSelectMeasure> createState() =>
  15. _CarotidLeftSiderSelectMeasure();
  16. }
  17. class _CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasureState {
  18. late final measure3DViewController = Get.find<Measure3DViewController>();
  19. ///写死的颈动脉测量项
  20. List<ItemMeta> carotidMeasureApplicationList = [
  21. ItemMeta(
  22. MeasureTypes.Distance,
  23. measureType: MeasureTypes.Distance,
  24. description: MeasureTypes.Distance,
  25. briefAnnotation: "D",
  26. outputs: [
  27. ItemOutputMeta(MeasureTypes.Distance, "Distance", VidUsUnit.cm),
  28. ],
  29. ),
  30. ItemMeta(
  31. MeasureTerms.Area,
  32. measureType: MeasureTypes.AreaPerimeterTrace,
  33. description: MeasureTerms.Area,
  34. briefAnnotation: MeasureTerms.Area,
  35. outputs: [
  36. ItemOutputMeta(MeasureTerms.Area, "Area", VidUsUnit.cm2),
  37. ],
  38. ),
  39. ItemMeta(
  40. MeasureTerms.Stenosis,
  41. measureType: MeasureTypes.StenosisTwoArea,
  42. description: MeasureTerms.Stenosis,
  43. outputs: [
  44. ItemOutputMeta(MeasureTerms.Stenosis, "%Stenosis", VidUsUnit.percent),
  45. ],
  46. childItems: [
  47. ItemMeta(
  48. "A1",
  49. description: "A1",
  50. measureType: MeasureTypes.AreaPerimeterTrace,
  51. outputs: [
  52. ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
  53. ],
  54. ),
  55. ItemMeta(
  56. "A2",
  57. description: "A2",
  58. measureType: MeasureTypes.AreaPerimeterTrace,
  59. outputs: [
  60. ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
  61. ],
  62. ),
  63. ],
  64. ),
  65. // '%Stenosis',
  66. ItemMeta(
  67. MeasureTerms.AntCCA_IMT,
  68. description: MeasureTerms.AntCCA_IMT,
  69. measureType: MeasureTerms.AntCCA_IMT,
  70. outputs: [
  71. ItemOutputMeta(MeasureTerms.AntCCA_IMT, "", VidUsUnit.cm),
  72. ],
  73. ),
  74. ItemMeta(
  75. MeasureTerms.PostCCA_IMT,
  76. description: MeasureTerms.PostCCA_IMT,
  77. measureType: MeasureTerms.PostCCA_IMT,
  78. outputs: [
  79. ItemOutputMeta(MeasureTerms.PostCCA_IMT, "", VidUsUnit.cm),
  80. ],
  81. ),
  82. ItemMeta(
  83. MeasureTerms.BothCCA_IMT,
  84. description: MeasureTerms.BothCCA_IMT,
  85. measureType: MeasureTerms.BothCCA_IMT,
  86. outputs: [
  87. ItemOutputMeta(MeasureTerms.BothCCA_IMT, "", VidUsUnit.cm),
  88. ],
  89. ),
  90. ItemMeta(
  91. MeasureTerms.PlaqueDetection,
  92. description: MeasureTerms.PlaqueDetection,
  93. measureType: MeasureTerms.PlaqueDetection,
  94. outputs: [
  95. ItemOutputMeta(MeasureTerms.PlaqueDetection, "", VidUsUnit.cm2),
  96. ],
  97. ),
  98. ItemMeta(
  99. MeasureTerms.IntimaDetection,
  100. description: MeasureTerms.IntimaDetection,
  101. measureType: MeasureTerms.IntimaDetection,
  102. outputs: [
  103. ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
  104. ],
  105. ),
  106. ];
  107. @override
  108. FWidget build(BuildContext context) {
  109. return FScrollbar(
  110. isAlwaysShown: true,
  111. child: FGridView.count(
  112. shrinkWrap: true,
  113. crossAxisCount: 2,
  114. childAspectRatio: 3,
  115. controller: ScrollController(),
  116. children: [
  117. ...carotidMeasureApplicationList.map((e) {
  118. if (e.name == activeName) {
  119. return _buildActivedMeasure(
  120. e,
  121. );
  122. } else {
  123. return _buildNoActivedMeasure(e);
  124. }
  125. }).toList(),
  126. ]),
  127. );
  128. }
  129. FWidget _buildActivedMeasure(ItemMeta itemMeta) {
  130. return FRow(
  131. children: [
  132. const FSizedBox(
  133. width: 12,
  134. ),
  135. FExpanded(
  136. child: FElevatedButton(
  137. onPressed: () => changeItem(itemMeta),
  138. child: FText(itemMeta.name),
  139. style: ElevatedButton.styleFrom(
  140. fixedSize: const Size.fromHeight(
  141. 40,
  142. ),
  143. ),
  144. ),
  145. ),
  146. const FSizedBox(
  147. width: 10,
  148. ),
  149. ],
  150. );
  151. }
  152. FWidget _buildNoActivedMeasure(ItemMeta itemMeta) {
  153. return FRow(
  154. children: [
  155. const FSizedBox(
  156. width: 12,
  157. ),
  158. FExpanded(
  159. child: FOutlinedButton(
  160. onPressed: () => changeItem(itemMeta),
  161. child: FText(
  162. itemMeta.name,
  163. style: const TextStyle(
  164. color: Colors.white,
  165. ),
  166. ),
  167. style: OutlinedButton.styleFrom(
  168. fixedSize: const Size.fromHeight(
  169. 40,
  170. ),
  171. side: const BorderSide(
  172. color: Color.fromRGBO(124, 124, 124, 1),
  173. ),
  174. textStyle: const TextStyle(
  175. color: Colors.white,
  176. ),
  177. ),
  178. ),
  179. ),
  180. const FSizedBox(
  181. width: 12,
  182. ),
  183. ],
  184. );
  185. }
  186. }