import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:wow_english/common/core/sp_const.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/utils/sp_util.dart'; class UserUtil { static UserEntity? _userEntity; static String get token => _userEntity?.token ?? ''; static void saveUser(UserEntity user) { _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(SpConst.prefsKeyUserInfo, userJson); } static String? _getUserJson() { return SpUtil.getInstance().get(SpConst.prefsKeyUserInfo); } static void _clearUserData() { _userEntity = null; SpUtil.getInstance().remove(SpConst.prefsKeyUserInfo); } static void logout() { _clearUserData(); Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(AppRouteName.login, (route) => false); } }