mine_page.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:go_router/go_router.dart';
  4. import 'package:sino_med_cloud/l10n/app_localizations.dart';
  5. import '../../main_tab_provider.dart';
  6. import '../domain/mine_service.dart';
  7. class MinePage extends ConsumerStatefulWidget {
  8. const MinePage({super.key});
  9. @override
  10. ConsumerState<MinePage> createState() => _MinePageState();
  11. }
  12. class _MinePageState extends ConsumerState<MinePage>
  13. with SingleTickerProviderStateMixin {
  14. @override
  15. Widget build(BuildContext context) {
  16. final l10n = AppLocalizations.of(context)!;
  17. return Scaffold(
  18. appBar: AppBar(
  19. title: Text(l10n.mine),
  20. elevation: 0,
  21. ),
  22. body: ListView.builder(
  23. itemCount: 2,
  24. itemBuilder: (BuildContext context, int index) {
  25. if (index == 0) {
  26. return ListTile(
  27. leading: const Icon(Icons.lock_outline),
  28. title: Text(l10n.changePassword),
  29. trailing: const Icon(Icons.chevron_right),
  30. onTap: _handleChangePassword,
  31. );
  32. } else if (index == 1) {
  33. return ListTile(
  34. leading: const Icon(Icons.logout, color: Colors.red),
  35. title: Text(
  36. l10n.logout,
  37. style: const TextStyle(color: Colors.red),
  38. ),
  39. trailing: const Icon(Icons.chevron_right),
  40. onTap: _handleLogout,
  41. );
  42. }
  43. return const SizedBox.shrink();
  44. },
  45. ),
  46. );
  47. }
  48. // 退出登录
  49. void _handleLogout() async {
  50. await MineService.logout(loginSystem: "YUN_HIS_PC_WEB");
  51. ref.read(currentTabIndexProvider.notifier).state = 0;
  52. Future.microtask(() {
  53. if (mounted) {
  54. context.replace('/');
  55. }
  56. });
  57. }
  58. void _handleChangePassword() {
  59. if (mounted) {
  60. context.push('/ChangePassword');
  61. }
  62. }
  63. }