在前端开发中经常会把服务端请求回来的数据存放到localstorage,方便接下来的操作使用,如:把token存放到localstorage中,下次发起网络请求时,把token附带到Header中。
flutter中其实和开发前端大同小异,有开发前端的基础,上手flutter会容易很多。在flutter中使用类似localstorage的功能需要在pubspec.yaml
引入依赖。
1 2 3 4
| dependencies: flutter: sdk: flutter shared_preferences: ^0.5.6
|
接下来将其封装成工具类,方便程序中的调用。
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); }
static setDouble(String key, double value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setDouble(key, value); }
static setInt(String key, int value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(key, value); }
static setString(String key, String value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(key, value); }
static setStringList(String key, List<String> value) async { final prefs = await SharedPreferences.getInstance(); await prefs.setStringList(key, value); }
static Future<bool> getBool(String key) async { final prefs = await SharedPreferences.getInstance(); bool value = prefs.getBool(key); return value; }
static Future<double> getDouble(String key) async { final prefs = await SharedPreferences.getInstance(); double value = prefs.getDouble(key); return value; }
static Future<int> getInt(String key) async { final prefs = await SharedPreferences.getInstance(); int value = prefs.getInt(key); return value; }
static Future<String> getString(String key) async { final prefs = await SharedPreferences.getInstance(); String value = prefs.getString(key); return value; }
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"), LocalStorage.setString("token", value), token = await LocalStorage.getString("token"), print("localtoken:$token") });
|
工具类封装的方法都是静态方法,可以直接用类名.方法名调用,flutter是由dart语言所写,和javascript有很多相似之处。
以上就是localstorage在flutter中的应用。