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 协议,转载请注明出处。