view.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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: const Icon(Icons.edit_document),
  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: const Icon(Icons.info_outline),
  47. route: VRouteSetting("/about", () => const AboutPage()),
  48. );
  49. }
  50. VSideNavMenuItem _buildLogOutItem() {
  51. return VSideNavMenuItem(
  52. title: "退出登录",
  53. icon: const Icon(Icons.exit_to_app),
  54. onTap: () {
  55. // TODO: 用confirm组件替换
  56. Get.dialog(
  57. VAlertDialog(
  58. title: "提示",
  59. width: 260,
  60. content: Container(
  61. height: 32,
  62. padding: const EdgeInsets.symmetric(horizontal: 24),
  63. alignment: Alignment.center,
  64. child: const Text(
  65. "确定退出登录?",
  66. style: TextStyle(fontSize: 20),
  67. ),
  68. ),
  69. onConfirm: () {
  70. controller.logOut();
  71. },
  72. ),
  73. barrierDismissible: false,
  74. barrierColor: Colors.black.withOpacity(.4),
  75. );
  76. },
  77. );
  78. }
  79. }