controller.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/defines.dart';
  4. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  5. import 'package:vitalapp/global.dart';
  6. // import 'package:vitalapp/architecture/utils/prompt_box.dart';
  7. import 'package:vitalapp/managers/interfaces/account.dart';
  8. import 'package:vitalapp/managers/interfaces/diagnosis.dart';
  9. import 'package:vitalapp/managers/interfaces/doctor.dart';
  10. import 'package:vitalapp/managers/interfaces/organization.dart';
  11. import 'package:vitalapp/managers/interfaces/patient.dart';
  12. import 'package:vitalapp/managers/interfaces/system_setting.dart';
  13. import 'package:vitalapp/managers/interfaces/upgrade.dart';
  14. import 'package:vitalapp/pages/upgrade/controller.dart';
  15. import 'package:vitalapp/pages/upgrade/widget/simple_app_upgrade.dart';
  16. import 'package:vitalapp/store/store.dart';
  17. import 'package:fis_common/logger/logger.dart';
  18. import 'state.dart';
  19. class LoginController extends FControllerBase {
  20. final state = LoginState();
  21. void onSubmit() async {
  22. if (!kIsOnline) {
  23. PromptBox.toast("请检查网络连接");
  24. return;
  25. }
  26. setBusy('登录中');
  27. // busy = true;
  28. try {
  29. final result = await Get.find<IAccountManager>()
  30. .login(state.account, state.password, state.isAutoLogin);
  31. if (result) {
  32. await _syncAfterLogin();
  33. // PromptBox.toast("登录成功");
  34. busy = false;
  35. Get.offAllNamed("/");
  36. /// 主页不确定 先跳检测页面
  37. // Get.offAllNamed('/medical', id: 1001);
  38. } else {
  39. busy = false;
  40. PromptBox.toast("登录失败");
  41. }
  42. } catch (e) {
  43. logger.e("LoginController login error", e);
  44. busy = false;
  45. PromptBox.error("登录异常");
  46. }
  47. }
  48. @override
  49. void onInit() {
  50. if (Store.user.account != null) {
  51. state.account = Store.user.account!;
  52. }
  53. state.isAutoLogin = Store.user.isAutoLogin;
  54. if (Store.user.isAutoLogin) {
  55. state.password = Store.user.password ?? '';
  56. }
  57. _checkUpdate();
  58. super.onInit();
  59. }
  60. /// 记住密码状态切换
  61. void onRememberPasswordChanged(bool val) {
  62. state.isAutoLogin = val;
  63. }
  64. @override
  65. void onClose() {
  66. _doDispose();
  67. super.onClose();
  68. }
  69. Future<void> _checkUpdate() async {
  70. final result = await Get.find<IUpgradeManager>().checkNewVersionArrival();
  71. if (result != null && result.isNeedUpdate) {
  72. final AppUpgradeController appUpgradeController =
  73. Get.put(AppUpgradeController());
  74. Get.dialog(
  75. GetBuilder<AppUpgradeController>(
  76. builder: (_) => AppUpgradeWidget(model: result),
  77. init: appUpgradeController,
  78. ),
  79. barrierDismissible: false,
  80. barrierColor: Colors.black.withOpacity(.4),
  81. );
  82. }
  83. }
  84. Future<void> _syncAfterLogin() async {
  85. await Get.find<IDoctorManager>().syncInfo();
  86. await Future.wait([
  87. // 更新应用级配置
  88. Get.find<ISystemSettingManager>().getSettings(true),
  89. // 更新机构相关配置
  90. Get.find<IOrganizationManager>().syncConfigurations(),
  91. //更新本地离线居民数据userCode等于空的数据
  92. Get.find<IPatientManager>().resettingUsercodeIsEmptyData(),
  93. //更新本地离线测试数据userCode等于空的数据
  94. Get.find<IDiagnosisManager>().resettingUsercodeIsEmptyData(),
  95. ]);
  96. }
  97. void _doDispose() {}
  98. }