flutter 本地缓存
本文最后更新于:2022年4月22日 上午
flutter 本地缓存
flutter 本地缓存
本地缓存是前端中常见的数组存储方式,能够在用户下次进入应用的时候恢复上一次已经进行过的配置
flutter中的本地存储需要使用官方提供的一个插件 shared_preferences
安装
根目录打开 pubspec.yaml
找到dependencies, 添加以下代码,然后再执行(flutter pub get
)
shared_preferences: ^2.0.13
或者根目录执行命令
flutter pub add shared_preferences
二次封装
import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Storage extends GetxService {
static Storage get to => Get.find();
late final SharedPreferences _prefs;
Future<Storage> init() async {
_prefs = await SharedPreferences.getInstance();
return this;
}
Future<bool> setString(String key, String value) async {
return await _prefs.setString(key, value);
}
Future<bool> setBool(String key, bool value) async {
return await _prefs.setBool(key, value);
}
Future<bool> setList(String key, List<String> value) async {
return await _prefs.setStringList(key, value);
}
String getString(String key) {
return _prefs.getString(key) ?? '';
}
bool getBool(String key) {
return _prefs.getBool(key) ?? false;
}
List<String> getList(String key) {
return _prefs.getStringList(key) ?? [];
}
Future<bool> remove(String key) async {
return await _prefs.remove(key);
}
}
使用
全局初始化
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences.setMockInitialValues({});
await Get.putAsync<Storage>(() => Storage().init());
基本使用
await Storage().setString(PUZZLES_INDEX, jsonEncode(puzzlesIndex));
var puzzlesIndex = Storage().to.getString(PUZZLES_INDEX);
if (puzzlesIndex.isNotEmpty) {
_profile(UserLoginResponseEntity.fromJson(jsonDecode(puzzlesIndex)));
}
或者
await Storage.to.setString(PUZZLES_INDEX, jsonEncode(puzzlesIndex));
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议,转载请注明出处。