Flutter,SharedPreferences的同步处理,如Android原生般的
Posted 飞翔的熊blabla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter,SharedPreferences的同步处理,如Android原生般的相关的知识,希望对你有一定的参考价值。
Flutter中没有自带的SharedPreferences,只能用插件,因此首先在pubspec.yaml文件中导入插件,如下,
dependencies:
shared_preferences: ^0.5.2
点击右上角 Packages get。
网上找了一大圈,无论是存储还是获取数据,都是要异步处理。比较麻烦。
那么能否让它变成同步呢,如图安卓原生的一般,答案是可以的,如下。
使用synchronized即可,我们在pubspec.yaml文件中导入synchronized,如下
dependencies:
synchronized: ^2.2.0
点击右上角 Packages get。
新建SpUtils封装类(完整版点击下方链接下载),单例模式,如下
class SpUtils
static SpUtils _singleton;
static SharedPreferences _prefs;
static Lock _lock = Lock();
static Future<SpUtils> getInstance() async
if (_singleton == null)
await _lock.synchronized(() async
if (_singleton == null)
// 保持本地实例直到完全初始化。
var singleton = SpUtils._();
await singleton._init();
_singleton = singleton;
);
return _singleton;
SpUtils._();
Future _init() async
_prefs = await SharedPreferences.getInstance();
///例举的String型存储及获取
static String getString(String key)
if (_prefs == null) return null;
var status = _prefs.getString(key);
if (status == null) return "";
return status;
static Future<bool> putString(String key, String value)
if (_prefs == null) return null;
return _prefs.setString(key, value);
接着我们在项目最开始dart文件中,进行SharedPreferences初始化,如下
void main()
runApp(MyApp());
loadAsync();
void loadAsync() async
await SpUtil.getInstance(); //等待Sp初始化完成
这样,我们就可以直接同步使用SharedPreferences进行存储和获取数据了。
使用方法,如下
SpUtils.putString("Name", "张三");
SpUtils.getString("Name");
完整SpUtils下载
————————————————
版权声明:本文为CSDN博主「小梦不知」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w283879367/article/details/105675573
以上是关于Flutter,SharedPreferences的同步处理,如Android原生般的的主要内容,如果未能解决你的问题,请参考以下文章
Flutter + SharedPreferences:如何使用 FutureBuilder
如何在 Flutter 中使用 SharedPreferences 和 Injectable?
Flutter 将 JSON 数组保存到 SharedPreferences
flutter: SharedPreferences桌面插件