
概述
使用SharedPreferences实现应用的本地数据存储,包括设置、收藏、历史等。
学习目标
- 掌握SharedPreferences的使用
- 实现数据持久化
- 处理JSON序列化
- 管理存储空间
核心实现
1. 保存简单数据
dart
final prefs = await SharedPreferences.getInstance();
// 保存
await prefs.setString('key', 'value');
await prefs.setInt('count', 10);
await prefs.setBool('enabled', true);
// 读取
final value = prefs.getString('key') ?? 'default';
final count = prefs.getInt('count') ?? 0;
final enabled = prefs.getBool('enabled') ?? false;
2. 保存复杂对象
dart
// 保存列表
final favorites = _favorites.map((article) =>
jsonEncode(article.toJson())
).toList();
await prefs.setStringList('favorites', favorites);
// 读取列表
final favoritesJson = prefs.getStringList('favorites') ?? [];
_favorites = favoritesJson.map((json) =>
NewsArticle.fromJson(jsonDecode(json))
).toList();
3. 清除数据
dart
// 删除单个
await prefs.remove('key');
// 清除所有
await prefs.clear();
技术要点
1. 支持的数据类型
- String
- int
- double
- bool
- List
2. JSON序列化
复杂对象需要先转换为JSON字符串。
3. 异步操作
所有操作都是异步的,需要使用await。
最佳实践
- 提供默认值:使用??操作符
- 及时保存:数据变化后立即保存
- 错误处理:捕获存储异常
- 限制大小:避免存储过大数据
下一步
下一章学习如何实现图片缓存。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
在这里你可以找到更多Flutter开发资源,与其他开发者交流经验,共同进步。