view.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import 'package:flutter/gestures.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/managers/interfaces/models/image_report_list_params.dart';
  5. import 'package:vitalapp/pages/consultation_record_view/widgets/consultation_record_filter.dart';
  6. import 'package:vitalapp/pages/consultation_record_view/widgets/record_data_table.dart';
  7. import 'package:vitalapp/pages/image_report_inner_view/controller.dart';
  8. import 'package:vitalapp/pages/image_report_inner_view/view.dart';
  9. import 'index.dart';
  10. import 'widgets/consultation_record_filter_drawer.dart';
  11. import 'widgets/operation_buttons_row.dart';
  12. class ConsultationRecordViewPage
  13. extends GetView<ConsultationRecordViewController> {
  14. @override
  15. String get pageName => "ConsultationRecordViewPage";
  16. const ConsultationRecordViewPage({Key? key}) : super(key: key);
  17. // 主视图
  18. Widget _buildView() {
  19. var body = Row(
  20. children: [
  21. Expanded(
  22. child: InkWell(
  23. // 将highlightColor和splashColor设置为透明色
  24. highlightColor: Colors.transparent,
  25. splashColor: Colors.transparent,
  26. hoverColor: Colors.transparent,
  27. focusColor: Colors.transparent,
  28. mouseCursor: SystemMouseCursors.basic,
  29. onTap: () {
  30. controller.closePatientInfoDialog();
  31. },
  32. child: Column(
  33. children: [
  34. GetBuilder<ConsultationRecordViewController>(
  35. id: 'record_data_table_header',
  36. builder: (context) {
  37. return ConsultationRecordFilter();
  38. },
  39. ),
  40. Expanded(
  41. child: SizedBox(
  42. width: double.infinity,
  43. child: RecordDataTable(),
  44. ),
  45. ),
  46. OperationButtonsRow(),
  47. ],
  48. ),
  49. ),
  50. ),
  51. Container(
  52. width: 320,
  53. decoration: BoxDecoration(
  54. border: Border(
  55. left: BorderSide(
  56. color: Colors.grey[300]!,
  57. width: 1,
  58. ),
  59. ),
  60. ),
  61. child: FutureBuilder(
  62. future: Future.delayed(Duration(
  63. milliseconds: Get.isRegistered<ImagereportinnerviewController>()
  64. ? 800
  65. : 0)),
  66. builder: (context, snapshot) {
  67. if (snapshot.connectionState == ConnectionState.done) {
  68. return ImageReportInnerView(
  69. args: ImageReportListParams(
  70. recordCode: controller.desktopListSelectedRecordCode,
  71. ),
  72. );
  73. } else {
  74. return Container();
  75. }
  76. },
  77. ),
  78. )
  79. ],
  80. );
  81. return FutureBuilder<bool>(
  82. future: _checkConsultationRecordViewController(),
  83. builder: (c, snapshot) {
  84. if (snapshot.connectionState == ConnectionState.done &&
  85. snapshot.hasData &&
  86. snapshot.data == true) {
  87. return Scaffold(
  88. key: controller.scaffoldKey,
  89. body: GetBuilder<ConsultationRecordViewController>(
  90. id: 'record_body',
  91. builder: (_) {
  92. return Stack(
  93. children: [
  94. body,
  95. ],
  96. );
  97. },
  98. ),
  99. drawerEdgeDragWidth: 500,
  100. drawerDragStartBehavior: DragStartBehavior.down,
  101. endDrawer: Drawer(
  102. width: 500,
  103. child: RecordFilterDrawer(),
  104. ),
  105. );
  106. } else {
  107. return SizedBox();
  108. }
  109. });
  110. }
  111. @override
  112. Widget build(BuildContext context) {
  113. return _buildView();
  114. }
  115. static Future<bool>? _checkConsultationRecordViewController() async {
  116. if (Get.isRegistered<ConsultationRecordViewController>()) {
  117. await Future.delayed(const Duration(milliseconds: 200));
  118. }
  119. return true;
  120. }
  121. }