| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import 'dart:convert';
- import 'package:flutter/material.dart';
- import 'package:twong/api/index.dart';
- import 'package:twong/providers/user_model.dart';
- import 'package:provider/provider.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:twong/models/index.dart';
- import 'package:twong/utils/index.dart';
- class Account {
- String account;
- String password;
- Token token;
- String toString() {
- return '{"account": "$account", "password": "$password", "token": ${json.encode(token.toJson())}}';
- }
- static Account fromString(String str) {
- Account account = Account();
- try {
- var map = json.decode(str);
- account.account = map["account"];
- account.password = map["password"];
- account.token = Token.fromJson(map["token"]);
- } catch (err) {
- Log.e(err);
- }
- return account;
- }
- }
- class SaveKey {
- static const String first = 'first';
- static const String account = 'account';
- static const String home = 'home';
- static const String balance = 'balance';
- }
- class Cache {
- static UserInfo _user;
- static Account _account;
- static bool checked = false;
- static SharedPreferences _pre;
- static Map<String, dynamic> _cacheData;
- static GlobalKey<NavigatorState> _navigatorKey;
- static GlobalKey<NavigatorState> get navigator => _navigatorKey;
- static void setKey(GlobalKey<NavigatorState> key) {
- _navigatorKey = key;
- }
- static Future initial () async {
- _cacheData = new Map<String, dynamic>();
- _pre = await SharedPreferences.getInstance();
- var str = loadString(SaveKey.account);
- if (str != null) {
- _account = Account.fromString(str);
- } else {
- _account = Account();
- }
- print('cache init over');
- }
- static saveString(String key, String value) {
- _pre.setString(key, value);
- }
- static saveBool(String key, bool value) {
- _pre.setBool(key, value);
- }
- static saveInt(String key, int value) {
- _pre.setInt(key, value);
- }
- static saveStringList(String key, List<String> value) {
- _pre.setStringList(key, value);
- }
- static loadInt(String key) => _pre.getInt(key);
- static loadBool(String key) => _pre.getBool(key);
- static loadString(String key) => _pre.getString(key);
- static loadStringList(String key) => _pre.getStringList(key);
- static updateAccount(String account, String password) {
- _account.account = account;
- _account.password = password;
- saveString(SaveKey.account, _account.toString());
- }
- static Token get token {
- if(_account.token?.token == null) return null;
- var token = _account.token;
- var time = DateTime.parse(token.expires_time);
- if(time.isAfter(DateTime.now())) return token;
- else return null;
- }
- static void updateToken(Token token) {
- _account.token = token == null ? Token() : token;
- saveString(SaveKey.account, _account.toString());
- Request.updateToken();
- }
- static UserInfo get user {
- // var context = navigator.currentState.overlay.context;
- // return Provider.of<UserModel>(context).info;
- return _user;
- }
- static void updateUserInfo(UserInfo user) {
- _user = user;
- saveString(SaveKey.account, _account.toString());
- // var context = navigator.currentState.overlay.context;
- // Provider.of<UserModel>(context, listen: false).update(user);
- }
- static void updateUser(User user) {
- _user.update(user);
- }
- static void set(String key, dynamic value) {
- _cacheData[key] = value;
- }
- static T get<T>(String key) {
- if(!_cacheData.containsKey(key)) return null;
- return _cacheData[key] as T;
- }
- static void clearCache() {
- _cacheData.clear();
- }
- static void clearAll() {
- updateToken(null);
- updateUserInfo(null);
- clearCache();
- Log.i("clear all data");
- }
- }
- extension VersionExtension on Version {
- bool operator < (Version b) {
- var strA = version.split('.');
- var strB = b.version.split('.');
- if(int.parse(strA[0]) < int.parse(strB[0])) return true;
- else if(strA[0] == strB[0]) {
- if (int.parse(strA[1]) < int.parse(strB[1])) return true;
- else if(strA[1] == strB[1]) {
- if (int.parse(strA[2]) < int.parse(strB[2])) return true;
- }
- }
- return false;
- }
- bool operator > (Version b) {
- var strA = version.split('.');
- var strB = b.version.split('.');
- if(int.parse(strA[0]) > int.parse(strB[0])) return true;
- else if(strA[0] == strB[0]) {
- if (int.parse(strA[1]) > int.parse(strB[1])) return true;
- else if(strA[1] == strB[1]) {
- if (int.parse(strA[2]) > int.parse(strB[2])) return true;
- }
- }
- return false;
- }
- }
|