view.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // ignore_for_file: unused_element
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  5. import 'package:vitalapp/architecture/values/features.dart';
  6. import 'package:vitalapp/components/appbar.dart';
  7. import 'package:vitalapp/components/button.dart';
  8. import 'package:vitalapp/components/side_nav/defines.dart';
  9. import 'package:vitalapp/components/side_nav/side_nav.dart';
  10. import 'package:vitalapp/pages/patient/info/widgets/base.dart';
  11. import 'package:vitalapp/pages/patient_info/controller.dart';
  12. import 'package:vitalapp/store/store.dart';
  13. import 'controller.dart';
  14. import 'state.dart';
  15. class PatientInfoPage extends GetView<PatientInfoController> {
  16. const PatientInfoPage({super.key});
  17. @override
  18. Widget build(BuildContext context) {
  19. var patientInfomationController = Get.find<PatientInfomationController>();
  20. return Scaffold(
  21. backgroundColor: Colors.white,
  22. appBar: VAppBar(
  23. titleWidget: Obx(
  24. () => Text(
  25. "${patientInfomationController.state.name}健康档案",
  26. style: const TextStyle(fontSize: 24),
  27. ),
  28. ),
  29. actions: [
  30. Container(
  31. margin: EdgeInsets.only(right: 10),
  32. child: ElevatedButton(
  33. onPressed: () async {
  34. var result = await controller.updatePatientAsync();
  35. if (result) {
  36. Get.back();
  37. Future.delayed(Duration(milliseconds: 100), () {
  38. PromptBox.toast("保存成功");
  39. });
  40. await controller.changePatient();
  41. }
  42. },
  43. child: Text('保存信息'),
  44. ),
  45. ),
  46. ],
  47. ),
  48. body: Stack(
  49. children: [
  50. VSideNavView(
  51. items: _buildItems(),
  52. isRemoveSideView: true,
  53. ),
  54. ],
  55. ),
  56. );
  57. }
  58. List<VSideNavMenuItem> _buildItems() {
  59. final items = <VSideNavMenuItem>[];
  60. items.add(_buildPersonalInfo());
  61. return items;
  62. }
  63. VSideNavMenuItem _buildPersonalInfo() {
  64. return VSideNavMenuItem(
  65. title: "基本信息",
  66. icon: Icon(Icons.edit_document, color: Colors.grey.shade700),
  67. pageBuilder: (_) => const _NavWidget(anchor: NavAnchorType.base),
  68. );
  69. }
  70. }
  71. class _NavWidget extends GetView<PatientInfoController> {
  72. final NavAnchorType anchor;
  73. const _NavWidget({required this.anchor});
  74. @override
  75. Widget build(BuildContext context) {
  76. return Stack(
  77. children: [
  78. PatientInfoBaseView(),
  79. ],
  80. );
  81. }
  82. }