在flutter中使用localstorage

在前端开发中经常会把服务端请求回来的数据存放到localstorage,方便接下来的操作使用,如:把token存放到localstorage中,下次发起网络请求时,把token附带到Header中。

flutter中其实和开发前端大同小异,有开发前端的基础,上手flutter会容易很多。在flutter中使用类似localstorage的功能需要在pubspec.yaml引入依赖。

1
2
3
4
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.5.6 # localstorage 用到的依赖包

接下来将其封装成工具类,方便程序中的调用。

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// 导入依赖
import 'package:shared_preferences/shared_preferences.dart';

/// 本地存储工具类
class LocalStorage {

/// 设置布尔的值
static setBool(String key, bool value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool(key, value);
}

/// 设置double的值
static setDouble(String key, double value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setDouble(key, value);
}

/// 设置int的值
static setInt(String key, int value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt(key, value);
}

/// 设置Sting的值
static setString(String key, String value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
}

/// 设置StringList
static setStringList(String key, List<String> value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setStringList(key, value);
}

/// 获取返回为bool的内容
static Future<bool> getBool(String key) async {
final prefs = await SharedPreferences.getInstance();
bool value = prefs.getBool(key);
return value;
}

/// 获取返回为double的内容
static Future<double> getDouble(String key) async {
final prefs = await SharedPreferences.getInstance();
double value = prefs.getDouble(key);
return value;
}

/// 获取返回为int的内容
static Future<int> getInt(String key) async {
final prefs = await SharedPreferences.getInstance();
int value = prefs.getInt(key);
return value;
}

/// 获取返回为String的内容
static Future<String> getString(String key) async {
final prefs = await SharedPreferences.getInstance();
String value = prefs.getString(key);
return value;
}

/// 获取返回为StringList的内容
static Future<List<String>> getStringList(String key) async {
final prefs = await SharedPreferences.getInstance();
List<String> value = prefs.getStringList(key);
return value;
}

/// 移除单个
static remove(String key) async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(key);
}

/// 清空所有
static clear() async {
final prefs = await SharedPreferences.getInstance();
await prefs.clear();
}
}

在程序用使用

1
2
3
4
5
6
7
8
9
10
11
// 定义变量
String token;
// 发起登录请求
User.login("admin", "123456").then((value) async => {
print("token:$value"),
// 登录成功,设置token到localstorage中
LocalStorage.setString("token", value),
// 从localstorage中获取 token
token = await LocalStorage.getString("token"),
print("localtoken:$token")
});

工具类封装的方法都是静态方法,可以直接用类名.方法名调用,flutter是由dart语言所写,和javascript有很多相似之处。

以上就是localstorage在flutter中的应用。

原文作者: dgb8901,yinxing

原文链接: https://www.itwork.club/2020/10/23/flutter-storage/

版权声明: 转载请注明出处

为您推荐

体验小程序「简易记账」

关注公众号「特想学英语」

在 React 里实现国旗下拉菜单