Flutter--shared_preferences缓存封装

该文介绍了在Flutter开发中如何利用官方库shared_preferences进行数据缓存,并提供了一个简单的缓存管理类UPCache的封装示例,便于后期替换其他缓存库。UPCache类包含了设置和获取不同类型数据的方法,以及预初始化的静态方法。
摘要由CSDN通过智能技术生成

Flutter开发中缓存数据,我们可以使用官方提供的shared_preferences,在实际项目中需要将它封装一层,方便后续替换其他缓存库。

添加依赖:

dependencies:
  shared_preferences: ^2.1.1

封装管理类:

import 'package:shared_preferences/shared_preferences.dart';

/// @author huzhuwei
class UPCache {
SharedPreferences? _prefs;
static UPCache? _instance;

UPCache.of() {
  init();
}
UPCache._pre(SharedPreferences prefs) {
  _prefs = prefs;
}

static UPCache getInstance() {
  _instance ??= UPCache.of();
  return _instance!;
}

void init() async {
  _prefs ??= await SharedPreferences.getInstance();
}

static Future<UPCache> preInit() async {
  if (_instance == null) {
    var prefs = await SharedPreferences.getInstance();
    _instance = UPCache._pre(prefs);
  }
  return _instance!;
}

void setData<T>(String key, T data) {
  if (data is String) {
    _prefs?.setString(key, data);
  } else if (data is double) {
    _prefs?.setDouble(key, data);
  } else if (data is int) {
    _prefs?.setInt(key, data);
  } else if (data is bool) {
    _prefs?.setBool(key, data);
  } else if (data is List<String>) {
    _prefs?.setStringList(key, data);
  }
}

void remove(String key) {
  _prefs?.remove(key);
}

T? get<T>(String key) {
  var value = _prefs?.get(key);
  if (value != null) {
    return value as T;
  }
  return null;
}
}

使用:

在initState()中,预初始化

  
void initState() {
  super.initState();
  UPCache.preInit();
}
  void test() {
  UPCache.getInstance().setData("key1", "hhahahahah");
  UPCache.getInstance().setData("key2", 123);
  UPCache.getInstance().setData("key3", false);
  UPCache.getInstance().setData("key4", 11.1);
  var value1 = UPCache.getInstance().get("key1");
  var value2 = UPCache.getInstance().get("key2");
  var value3 = UPCache.getInstance().get("key3");
  var value4 = UPCache.getInstance().get("key4");
  print('value1:$value1');
  print('value2:$value2');
  print('value3:$value3');
  print('value4:$value4');
}
好的,这是一个使用 Flutter 操作 shared_preferences 的例程: ```dart import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; @override void initState() { super.initState(); _loadCounter(); } Future<void> _loadCounter() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _counter = (prefs.getInt('counter') ?? 0); }); } Future<void> _incrementCounter() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _counter++; prefs.setInt('counter', _counter); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Flutter Shared Preferences Demo"), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headline4, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); } } ``` 这个例程演示了如何在 Flutter 中使用 shared_preferences 库来读取和写入应用程序的持久化数据。在这个例子中,我们使用一个整型变量 `_counter` 来记录用户点击按钮的次数。在 `initState` 方法中,我们调用 `_loadCounter` 方法来从 shared_preferences 中读取 `_counter` 的值。在 `_incrementCounter` 方法中,我们调用 `prefs.setInt('counter', _counter)` 来将 `_counter` 的值写入 shared_preferences。每当用户点击按钮时,我们调用 `_incrementCounter` 方法来增加 `_counter` 的值并更新 UI。 注意:为了使用 shared_preferences 库,你需要在 `pubspec.yaml` 文件中添加以下依赖项: ```yaml dependencies: shared_preferences: ^2.0.5 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值