Flutter使用本地存储SharedPreference(Android)/NSUserDefaults(iOS)

在移动开发的过程中我们会不可避免地使用到数据的持久化。当我们需要存储一些简单的数据时,我们会使用到NSUserDefaults (iOS) 或 SharedPreferences (Android),本文我们就来介绍这个方便的Flutter插件shared_preferences来实现本地存储的需求。

添加依赖

要使用这个插件,首先在工程的pubspec.yaml文件中加入对这个插件的依赖:

1
2
dependencies:
shared_preferences: ^0.5.2

下载插件

1
flutter packages get

使用示例

1
2
3
4
5
6
_incrementCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
int counter = (prefs.getInt('counter') ?? 0) + 1;
print('Pressed $counter times.');
await prefs.setInt('counter', counter);
}

注意:在使用这个插件时,我们需要进行异步调用,也就是需要使用async/await。

工具类

我这里也封装了一个工具类pref_util.dart,需要的话可以直接拷贝到工程中,可以少写一些枯燥的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import 'package:shared_preferences/shared_preferences.dart';

setPrefString(String key, String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString(key, value);
}

setPrefInt(String key, int value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setInt(key, value);
}

setPrefDouble(String key, double value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setDouble(key, value);
}

setPrefStringList(String key, List<String> value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setStringList(key, value);
}

setPrefBool(String key, bool value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool(key, value);
}

getPrefString(String key, {String defaultValue = ''}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(key) ?? defaultValue;
}

getPrefInt(String key, {int defaultValue = 0}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getInt(key) ?? defaultValue;
}

getPrefDouble(String key, {double defaultValue = 0}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getDouble(key) ?? defaultValue;
}

getPrefStringList(String key, {List<String> defaultValue = const []}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getStringList(key) ?? defaultValue;
}

getPrefBool(String key, {bool defaultValue = false}) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool(key) ?? defaultValue;
}

removePref(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove(key);
}

prefContains(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.get(key) != null;
}

本文原创地址为:http://examplecode.cn/2019/04/25/flutter-shared-preference/
转载请注明出处。

我的博客中关于Flutter的所有文章可以点击这里找到,欢迎关注!

坚持原创技术分享,您的支持将鼓励我继续创作!