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