mmkv简述
mmkv提供了同步存取的方法,轻量便捷。
MMKVCacheUtil工具类
一般基于它进行二次封装。
class MMKVCacheUtil {
static MMKV? _mmkv = MMKV.defaultMMKV();
static void setString(String key, String value) {
_mmkv?.encodeString(key, value);
}
static String? getString(String key) {
return _mmkv?.decodeString(key);
}
static void setInt(String key, int value) {
_mmkv?.encodeInt(key, value);
}
static int? getInt(String key) {
return _mmkv?.decodeInt(key);
}
static void setMap(String key, Map<String, dynamic> value) {
String jsonString = json.encode(value);
_mmkv?.encodeString(key, jsonString);
}
static Map<String, dynamic>? getMap(String key) {
String? jsonString = _mmkv?.decodeString(key);
if (jsonString != null) {
return Map<String, dynamic>.from(json.decode(jsonString));
}
return null;
}
static void setBool(String key, bool value) {
_mmkv?.encodeBool(key, value);
}
static bool? getBool(String key) {
return _mmkv?.decodeBool(key);
}
static void remove(String key) {
return _mmkv?.removeValue(key);
}
}
统一管理键值对
记得把项目中使用到的本地缓存简对对统一管理起来。 另外发现extension on MMKVCacheUtil时,extension只能在本文件中使用。 extension name on MMKVCacheUtil时,外部才能使用。
extension CacheManager on MMKVCacheUtil {
// 设置未读数
static setUnreadCount(int unreadCount) {
Map<String, dynamic>? userInfoMap = CacheManager.getUserInfo();
String userId = SafeUtil.safeString(userInfoMap?['id']);
MMKVCacheUtil.setInt('${userId}_unread_count', unreadCount);
}
static int? getUnreadCount() {
Map<String, dynamic>? userInfoMap = CacheManager.getUserInfo();
String userId = SafeUtil.safeString(userInfoMap?['id']);
return MMKVCacheUtil.getInt('${userId}_unread_count');
}