Flutter中如何使用SharedPreferences存储数据
在Flutter中如何使用SharedPreferences存储和读取简单数据?比如我想保存用户的登录状态或一些简单的配置信息,但不太清楚具体怎么实现。是否需要添加额外的依赖包?能否提供一个完整的代码示例,包括初始化、保存数据和读取数据的步骤?另外,SharedPreferences存储的数据类型有哪些限制?
2 回复
在Flutter中使用SharedPreferences存储数据,需先添加依赖shared_preferences。然后通过SharedPreferences.getInstance()获取实例,使用setString、getString等方法读写数据。例如:prefs.setString('key', 'value')。
更多关于Flutter中如何使用SharedPreferences存储数据的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用SharedPreferences存储数据,可以通过以下步骤实现:
-
添加依赖
在pubspec.yaml文件中添加依赖:dependencies: shared_preferences: ^2.2.2运行
flutter pub get安装包。 -
基本用法
import 'package:shared_preferences/shared_preferences.dart'; // 保存数据 Future<void> saveData() async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('username', 'John'); // 存储字符串 await prefs.setInt('age', 25); // 存储整型 await prefs.setBool('isLoggedIn', true); // 存储布尔值 } // 读取数据 Future<void> readData() async { final prefs = await SharedPreferences.getInstance(); String? username = prefs.getString('username'); // 读取字符串 int? age = prefs.getInt('age'); // 读取整型 bool? isLoggedIn = prefs.getBool('isLoggedIn'); // 读取布尔值 print('用户名: $username, 年龄: $age, 登录状态: $isLoggedIn'); } // 删除数据 Future<void> deleteData() async { final prefs = await SharedPreferences.getInstance(); await prefs.remove('username'); // 删除指定键 } // 清空所有数据 Future<void> clearData() async { final prefs = await SharedPreferences.getInstance(); await prefs.clear(); } -
注意事项
- SharedPreferences适用于存储简单数据(如字符串、数字、布尔值)。
- 所有操作都是异步的,需使用
await。 - 存储复杂数据(如对象)需先序列化为字符串(如使用
jsonEncode)。
示例:存储自定义对象
class User {
final String name;
final int age;
User(this.name, this.age);
Map<String, dynamic> toJson() => {'name': name, 'age': age};
static User fromJson(Map<String, dynamic> json) => User(json['name'], json['age']);
}
// 存储对象
Future<void> saveUser(User user) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString('user', jsonEncode(user.toJson()));
}
// 读取对象
Future<User?> getUser() async {
final prefs = await SharedPreferences.getInstance();
String? userJson = prefs.getString('user');
if (userJson != null) {
return User.fromJson(jsonDecode(userJson));
}
return null;
}
通过以上方法,可以高效地在Flutter应用中实现轻量级数据持久化存储。

