user_util.dart 1.41 KB
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:wow_english/common/core/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 String token = '';

  static saveUser(UserEntity user) {
    token = user.token;
    SpUtil.getInstance().setData(SpConst.prefsKeyUserInfo, user.toString());
  }

  static UserEntity? getUser() {
    String? userJson = getUserJson();
    if (userJson != null && userJson.isNotEmpty) {
      var userEntity = UserEntity.fromJson(json.decode(userJson));
      // todo 并且在有效期,计算一下, "expireTime": 2592000 倒计时需要手动转换,后面再优化
      if (userEntity.token.isNotEmpty) {
        token = userEntity.token;
        return userEntity;
      } else {
        // token为空或失效的,清除sp
        clearUserSp();
      }
    }
    return null;
  }

  static saveUserJson(String userJson) {
    SpUtil.getInstance().setData(SpConst.prefsKeyUserInfo, userJson);
  }

  static String? getUserJson() {
    return SpUtil.getInstance().get<String>(SpConst.prefsKeyUserInfo);
  }

  static clearUserSp() {
    token = '';
    SpUtil.getInstance().remove(SpConst.prefsKeyUserInfo);
  }

  static logout() {
    clearUserSp();
    Navigator.of(AppRouter.context).push(AppRouteName.login as Route<Object?>);
  }
}