exam_medication.dart 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import 'package:flutter/material.dart';
  2. import 'package:vitalapp/components/button.dart';
  3. import 'package:vitalapp/pages/check/models/form.dart';
  4. import 'package:vitalapp/pages/check/widgets/exam_configurable/exam_radio_and_select.dart';
  5. class ExamMedication extends StatelessWidget {
  6. final List<dynamic>? currentValues;
  7. final Function? addVeterinaryDrug;
  8. final FormObject currentFormObject;
  9. final Function? deleteVeterinaryDrug;
  10. const ExamMedication({
  11. super.key,
  12. this.currentValues,
  13. this.addVeterinaryDrug,
  14. required this.currentFormObject,
  15. this.deleteVeterinaryDrug,
  16. });
  17. @override
  18. Widget build(BuildContext context) {
  19. return Stack(
  20. children: [
  21. ExamCardRadioSelect(
  22. title: currentFormObject.label ?? "",
  23. clickCard: null,
  24. content: Container(
  25. alignment: Alignment.centerLeft,
  26. padding: const EdgeInsets.only(
  27. right: 20,
  28. left: 20,
  29. bottom: 10,
  30. ),
  31. child: Column(children: [
  32. ...currentValues!.asMap().entries.map((entry) {
  33. var medicationModel = MedicationModel.fromJson(entry.value);
  34. return Row(
  35. crossAxisAlignment: CrossAxisAlignment.start,
  36. mainAxisAlignment: MainAxisAlignment.start,
  37. children: [
  38. Expanded(
  39. child: Text(
  40. "药物${entry.key + 1}:${medicationModel.name} 用法:${medicationModel.monthOrDay}${medicationModel.usage}次 每次剂量${medicationModel.dosages} mg",
  41. style: TextStyle(fontSize: 18, color: Colors.black54),
  42. textAlign: TextAlign.left,
  43. ),
  44. ),
  45. IconButton(
  46. onPressed: () {
  47. deleteVeterinaryDrug!(entry.key);
  48. },
  49. icon: Icon(Icons.delete),
  50. ),
  51. ],
  52. );
  53. }).toList()
  54. ]),
  55. ),
  56. ),
  57. Positioned(
  58. right: 16,
  59. top: 8,
  60. child: SizedBox(
  61. width: 130,
  62. height: 54,
  63. child: VButton(
  64. child: Row(
  65. mainAxisAlignment: MainAxisAlignment.center,
  66. children: const [
  67. Icon(Icons.add, size: 24),
  68. SizedBox(
  69. width: 8,
  70. ),
  71. Text(
  72. "新增",
  73. style: TextStyle(
  74. fontSize: 20,
  75. ),
  76. )
  77. ],
  78. ),
  79. onTap: () {
  80. addVeterinaryDrug!();
  81. },
  82. ),
  83. ),
  84. ),
  85. ],
  86. );
  87. }
  88. }