view.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vnoteapp/components/alert_dialog.dart';
  4. import 'package:vnoteapp/components/side_nav/defines.dart';
  5. import 'package:vnoteapp/components/side_nav/side_nav.dart';
  6. import 'package:vnoteapp/pages/doctor/signature_setting/controller.dart';
  7. import 'package:vnoteapp/pages/doctor/signature_setting/view.dart';
  8. import 'package:vnoteapp/pages/settings/about/view.dart';
  9. import 'package:vnoteapp/routes/nav_ids.dart';
  10. import 'package:vnoteapp/routes/route_setting.dart';
  11. import 'controller.dart';
  12. class SettingCenterPage extends GetView<SettingCenterController> {
  13. const SettingCenterPage({super.key});
  14. @override
  15. Widget build(BuildContext context) {
  16. return VSideNavView(
  17. navId: NavIds.SETTINGS,
  18. items: _buildItems(),
  19. );
  20. }
  21. List<VSideNavMenuItem> _buildItems() {
  22. final items = <VSideNavMenuItem>[];
  23. items.add(_buildSignatureItem());
  24. items.add(_buildAboutItem());
  25. items.add(_buildLogOutItem());
  26. return items;
  27. }
  28. VSideNavMenuItem _buildSignatureItem() {
  29. return VSideNavMenuItem(
  30. title: "签名设置",
  31. icon: Icon(Icons.edit_document, color: Colors.grey.shade700),
  32. route: VRouteSetting(
  33. "/signature",
  34. () => const DoctorSignatureSettingPage(),
  35. binding: BindingsBuilder(
  36. () {
  37. Get.lazyPut(() => DoctorSignatureSettingController());
  38. },
  39. ),
  40. ),
  41. );
  42. }
  43. VSideNavMenuItem _buildAboutItem() {
  44. return VSideNavMenuItem(
  45. title: "关于我们",
  46. icon: Icon(Icons.info_outline, color: Colors.grey.shade700),
  47. route: VRouteSetting("/about", () => const AboutPage()),
  48. );
  49. }
  50. VSideNavMenuItem _buildLogOutItem() {
  51. return VSideNavMenuItem(
  52. title: "退出登录",
  53. icon: Icon(Icons.exit_to_app, color: Colors.grey.shade700),
  54. // shouldRearrage: true, // TODO: 调整样式后启用
  55. onTap: () {
  56. // TODO: 用confirm组件替换
  57. Get.dialog(
  58. VAlertDialog(
  59. title: "提示",
  60. width: 260,
  61. content: Container(
  62. height: 32,
  63. padding: const EdgeInsets.symmetric(horizontal: 24),
  64. alignment: Alignment.center,
  65. child: const Text(
  66. "确定退出登录?",
  67. style: TextStyle(fontSize: 20),
  68. ),
  69. ),
  70. onConfirm: () {
  71. controller.logOut();
  72. },
  73. ),
  74. barrierDismissible: false,
  75. barrierColor: Colors.black.withOpacity(.4),
  76. );
  77. },
  78. );
  79. }
  80. }