user_manager.dart 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'dart:convert';
  2. import 'package:shuqi/model/user_model.dart';
  3. import 'package:shuqi/utility/event_bus.dart';
  4. import 'package:shuqi/model/constant.dart';
  5. const String EventUserLogin = 'EventUserLogin';
  6. const String EventUserLogout = 'EventUserLogout';
  7. class UserManager {
  8. static UserManager instance = UserManager();
  9. UserModel? user;
  10. static UserModel? get currentUser {
  11. return UserManager.instance.user;
  12. }
  13. logout() {
  14. this.user = null;
  15. preferences.remove('user');
  16. eventBus.emit(EventUserLogout);
  17. }
  18. login(Map<String, dynamic> userJson) {
  19. var user = UserModel.fromJson(userJson);
  20. this.user = user;
  21. saveUser();
  22. eventBus.emit(EventUserLogin);
  23. }
  24. bool get isLogin {
  25. return user != null;
  26. }
  27. loadUserFromLocal() {
  28. String? userJson = preferences.getString('user');
  29. if (userJson != null) {
  30. user = UserModel.fromJson(json.decode(userJson));
  31. }
  32. }
  33. void saveUser() async {
  34. var data = json.encode(user);
  35. preferences.setString('user', data);
  36. }
  37. }