face_result_dialog.dart 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'package:fis_jsonrpc/services/patient.m.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/architecture/utils/datetime.dart';
  5. import 'package:vitalapp/components/alert_dialog.dart';
  6. import 'package:vitalapp/consts/rpc_enum_labels.dart';
  7. class FaceResultDialog extends StatelessWidget {
  8. final PatientBaseDTO data;
  9. /// 是否已建档
  10. final bool? hasCreateRecord;
  11. const FaceResultDialog({
  12. super.key,
  13. required this.data,
  14. this.hasCreateRecord = true,
  15. });
  16. static Future<bool> show(
  17. PatientBaseDTO data,
  18. bool hasCreateRecord,
  19. ) async {
  20. final result = await Get.dialog(
  21. FaceResultDialog(
  22. data: data,
  23. hasCreateRecord: hasCreateRecord,
  24. ),
  25. barrierDismissible: false,
  26. );
  27. return result == true;
  28. }
  29. @override
  30. Widget build(BuildContext context) {
  31. return _buildContent();
  32. }
  33. Widget _buildContent() {
  34. final title = hasCreateRecord! ? "识别结果-已建档" : "识别结果-未建档";
  35. return VAlertDialog(
  36. title: title,
  37. width: 400,
  38. contentPadding: const EdgeInsets.symmetric(horizontal: 36, vertical: 12),
  39. showCancel: false, // 目前销售确认只要确定,不需要取消
  40. onConfirm: () {
  41. Get.back(result: true);
  42. },
  43. content: Column(
  44. mainAxisSize: MainAxisSize.min,
  45. children: [
  46. _buildRow("姓名", data.patientName!),
  47. _buildRow("性别", RpcEnumLabels.gender[data.patientGender]!),
  48. // _buildRow("出生日期", DateFormat('yyyy-MM-dd').format(data.birthday!)),
  49. _buildRow("年龄", DataTimeUtils.calculateAge(data.birthday!)),
  50. _buildRow("身份证", data.cardNo!),
  51. ],
  52. ),
  53. );
  54. }
  55. Widget _buildRow(String label, String content) {
  56. return Padding(
  57. padding: const EdgeInsets.symmetric(vertical: 4),
  58. child: Row(
  59. children: [
  60. SizedBox(
  61. width: 90,
  62. child: Text(
  63. '$label:',
  64. style: const TextStyle(color: Colors.black, fontSize: 20),
  65. ),
  66. ),
  67. const SizedBox(width: 12),
  68. Expanded(
  69. child: Text(
  70. content,
  71. style: const TextStyle(color: Colors.black, fontSize: 20),
  72. ),
  73. ),
  74. ],
  75. ),
  76. );
  77. }
  78. }