用这个SharedPreferences怎样保存用户登陆后的状态、令牌、用户名和密码等
使用 SharedPreferences 保存用户登录后的状态、令牌、用户名和密码等信息非常方便。以下是一个完整的示例,包括如何保存和读取这些数据:
1. 添加依赖
首先,在 pubspec.yaml 文件中添加 shared_preferences 依赖:
dependencies: flutter: sdk: flutter shared_preferences: ^2.0.15 # 确保使用最新版本 2. 保存用户登录数据
创建一个函数,用于保存用户登录后的状态、令牌、用户名和密码:
import 'package:shared_preferences/shared_preferences.dart'; Future<void> saveUserLoginData(bool isLoggedIn, String token, String username, String password) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool('isLoggedIn', isLoggedIn); await prefs.setString('token', token); await prefs.setString('username', username); await prefs.setString('password', password); }3. 读取用户登录数据
创建一个函数,用于读取用户登录后的状态、令牌、用户名和密码:
import 'package:shared_preferences/shared_preferences.dart'; Future<Map<String, dynamic>> getUserLoginData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); bool? isLoggedIn = prefs.getBool('isLoggedIn'); String? token = prefs.getString('token'); String? username = prefs.getString('username'); String? password = prefs.getString('password'); return { 'isLoggedIn': isLoggedIn ?? false, 'token': token ?? '', 'username': username ?? '', 'password': password ?? '', }; } 4. 删除用户登录数据
创建一个函数,用于删除用户登录数据,例如用户注销时:
import 'package:shared_preferences/shared_preferences.dart'; Future<void> clearUserLoginData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.remove('isLoggedIn'); await prefs.remove('token'); await prefs.remove('username'); await prefs.remove('password'); } 示例:使用保存和读取函数
以下是如何在应用中使用这些函数的示例:
void main() async { // 保存用户登录数据 await saveUserLoginData(true, 'some_token', 'user123', 'password123');// 读取用户登录数据 Map<String, dynamic> loginData = await getUserLoginData(); bool isLoggedIn = loginData['isLoggedIn']; String token = loginData['token']; String username = loginData['username']; String password = loginData['password']; print('Is Logged In: $isLoggedIn'); print('Token: $token'); print('Username: $username'); print('Password: $password'); // 清除用户登录数据(例如用户注销时) await clearUserLoginData(); }注意事项
- 由于
SharedPreferences使用的是键值对存储,因此存储和读取时需要确保使用相同的键名。 SharedPreferences适合存储小量数据,如果数据量较大或对安全性要求较高,建议使用其他存储方式,如 SQLite 或flutter_secure_storage。
浙公网安备 33010602011771号