添加依赖

  shared_preferences: ^0.5.+

工具类

import 'dart:async';

import 'package:shared_preferences/shared_preferences.dart';

/// 用来做shared_preferences的存储
class SpUtil {
static SpUtil _instance;
static Future<SpUtil> get instance async {
return await getInstance();
} static SharedPreferences _spf; SpUtil._(); Future _init() async {
_spf = await SharedPreferences.getInstance();
} static Future<SpUtil> getInstance() async {
if (_instance == null) {
_instance = new SpUtil._();
await _instance._init(); }
return _instance;
} static bool _beforeCheck() {
if (_spf == null) {
return true;
}
return false;
}
// 判断是否存在数据
bool hasKey(String key) {
Set keys = getKeys();
return keys.contains(key);
} Set<String> getKeys() {
if (_beforeCheck()) return null;
return _spf.getKeys();
} get(String key) {
if (_beforeCheck()) return null;
return _spf.get(key);
} getString(String key) {
if (_beforeCheck()) return null;
return _spf.getString(key);
} Future<bool> putString(String key, String value) {
if (_beforeCheck()) return null;
return _spf.setString(key, value);
} bool getBool(String key) {
if (_beforeCheck()) return null;
return _spf.getBool(key);
} Future<bool> putBool(String key, bool value) {
if (_beforeCheck()) return null;
return _spf.setBool(key, value);
} int getInt(String key) {
if (_beforeCheck()) return null;
return _spf.getInt(key);
} Future<bool> putInt(String key, int value) {
if (_beforeCheck()) return null;
return _spf.setInt(key, value);
} double getDouble(String key) {
if (_beforeCheck()) return null;
return _spf.getDouble(key);
} Future<bool> putDouble(String key, double value) {
if (_beforeCheck()) return null;
return _spf.setDouble(key, value);
} List<String> getStringList(String key) {
return _spf.getStringList(key);
} Future<bool> putStringList(String key, List<String> value) {
if (_beforeCheck()) return null;
return _spf.setStringList(key, value);
} dynamic getDynamic(String key) {
if (_beforeCheck()) return null;
return _spf.get(key);
} Future<bool> remove(String key) {
if (_beforeCheck()) return null;
return _spf.remove(key);
} Future<bool> clear() {
if (_beforeCheck()) return null;
return _spf.clear();
}
}

使用:

 SpUtil sp = await SpUtil.getInstance();
int value =sp.getInt(”key“);

flutter中使用shared_preferences的存储的更多相关文章

  1. 在Flutter中嵌入Native组件的正确姿势是...

    引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式 ...

  2. 理解 Flutter 中的 Key

    概览 在 Flutter 中,大概大家都知道如何更新界面视图: 通过修改 Stata 去触发 Widget 重建,触发和更新的操作是 Flutter 框架做的. 但是有时即使修改了 State,Flu ...

  3. 在 Flutter 中使用 TensorFlow Lite 插件实现文字分类

    如果您希望能有一种简单.高效且灵活的方式把 TensorFlow 模型集成到 Flutter 应用里,那请您一定不要错过我们今天介绍的这个全新插件 tflite_flutter.这个插件的开发者是 G ...

  4. Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  5. C#实现MySQL数据库中的blob数据存储

    在MySQL数据库中,有一种blob数据类型,用来存储文件.C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll. Mysql.Data.dll(6.9.6)组件下载 ...

  6. ASP.net 中关于Session的存储信息及其它方式存储信息的讨论与总结

    通过学习和实践笔者总结一下Session 的存储方式.虽然里面的理论众所周知,但是我还是想记录并整理一下.作为备忘录吧.除了ASP.net通过Web.config配置的方式,还有通过其它方式来存储的方 ...

  7. .NET Core程序中使用User Secrets存储敏感数据

    前言 在开发中经常会用到一些敏感数据,比如AppSecret或数据库连接字符串,无论是硬编码还是写在配置文件中,最终都要push到svn或git上.对于开源项目,这些敏感数据就无隐私可言了,对于私有项 ...

  8. C语言_了解一下C语言中的四种存储类别

    C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. C语言中的四种存储类别:auto ...

  9. 从零学习Fluter(五):Flutter中手势滑动拖动已经网络请求

    从六号开始搞Flutter,到今天写这篇blog已经过了4天时间,文档初步浏览了一遍,写下了这个demo.demo源码分享在github上,现在对flutter有种说不出的喜欢了.大家一起搞吧! 废话 ...

随机推荐

  1. 爬虫(二)-创建项目&应用

    一.回顾 上篇已经讲解了python-django的环境搭建,本次将继续上次的课程,开始创建项目及应用. 上篇的验证结果为: 本次将加上创建应用之后浏览器打开演示~ 二.创建项目 1)使用django ...

  2. 从锅炉工到AI专家 ---- 系列教程

    TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成 那些令人惊艳的TensorFlow扩展包和社区贡献模型  从锅炉工到AI专家(11)(END) 从锅炉工到AI专家(10)  从锅 ...

  3. (java)selenium webdriver学习,选择模块,点击下一页,获取当前url

    selenium webdriver学习,选择模块,点击下一页,获取当前url 查找下一页有多种方法,这里列举两种: isSelected()函数用于判断是否点击选中,返回Boolean类型 impo ...

  4. 关于Serializable

    1.在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化. 2.通过ObjectOutputStream和ObjectInputStream对对象进行序列化 ...

  5. 【CSP-S 2019】【洛谷P5666】树的重心【主席树】【树状数组】【dfs】

    题目: 题目链接:https://www.luogu.com.cn/problem/P5666 小简单正在学习离散数学,今天的内容是图论基础,在课上他做了如下两条笔记: 一个大小为 \(n\) 的树由 ...

  6. 2、Hadoop 2.X 概述及生态系统

    Hadoop官网 http://hadoop.apache.org/ Hadoop来源 GFS -> HDFS MapReduce -> MapReduce BigTable -> ...

  7. Openwrt路由器上常用的操作

    换了好些固件,大体上都差不多. 只能用opkg下载安装,不能用apt-get安装. 1.tcpdump和nano是我必备的,个人觉得nano比vi好用 opkg install tcpdump opk ...

  8. learning java ProcessHandle 获取进程相当信息

    Process p = rt.exec("notepad.exe"); ProcessHandle ph = p.toHandle(); System.out.println(&q ...

  9. Springboot如何优雅的解决ajax+自定义headers的跨域请求[转]

    1.什么是跨域 由于浏览器同源策略(同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略.所谓同源是指,域名,协议,端口相同.),凡是发 ...

  10. 想学习找不到好的博客?看这里>>

    想学习找不到好的博客?看这里>> (ps:内容 + 作者) 基础数论知识整理--gyh 进阶数论知识整理--又是gyh 关于SPFA--lyj(终于不是gyh) 证明二次探测定理-Line ...