import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:umeng_common_sdk/umeng_common_sdk.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/utils/sp_util.dart'; import '../../utils/audio_player_util.dart'; class UserUtil { static const String _prefsKeyUserInfo = "key_user_info"; static UserEntity? _userEntity; static void saveUser(UserEntity? user) { if (user == null) { _clearUserData(); return; } _userEntity = user; _saveUserJson(user.toString()); } static UserEntity? getUser() { if (_userEntity == null) { String? userJson = _getUserJson(); if (userJson != null && userJson.isNotEmpty) { try { var userEntity = UserEntity.fromJson(json.decode(userJson)); // todo 并且在有效期,计算一下, "expireTime": 2592000 倒计时需要手动转换,后面再优化 _userEntity = userEntity; } catch (e) { if (kDebugMode) { print(e); } _clearUserData(); } } } return _userEntity; } static void _saveUserJson(String userJson) { SpUtil.getInstance().setData(_prefsKeyUserInfo, userJson); } static String? _getUserJson() { return SpUtil.getInstance().get(_prefsKeyUserInfo); } static void _clearUserData() { _userEntity = null; SpUtil.getInstance().remove(_prefsKeyUserInfo); } static void logout([bool showPasswordLoginPage = false]) { _clearUserData(); // 判断下不在Splash页就跳转 /*var currentPageName = ModalRoute.of(AppRouter.context)?.settings.name; Log.d('当前页面:$currentPageName'); if (currentPageName != AppRouteName.splash) { Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(AppRouteName.login, (route) => false); }*/ UmengCommonSdk.onProfileSignOff(); AudioPlayerUtil.getInstance().pause(); pushNamedAndRemoveUntil(AppRouteName.login, (route) => false, arguments: {'showPasswordPage': showPasswordLoginPage}); } // 是否有权限 static bool hasPermission() { return _userEntity?.valid ?? false; } // 是否登录(token是否有效) static bool isLogined() { return getUserToken().isNotEmpty; } static String getUserToken() { return _userEntity?.token ?? ''; } // (vip)剩余有效期 static int getRemainingValidity() { return _userEntity?.validDay ?? 0; } }