Flutter for OpenHarmony:从零搭建今日资讯App(二十六)本地存储实现

概述

使用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。

最佳实践

  1. 提供默认值:使用??操作符
  2. 及时保存:数据变化后立即保存
  3. 错误处理:捕获存储异常
  4. 限制大小:避免存储过大数据

下一步

下一章学习如何实现图片缓存。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

在这里你可以找到更多Flutter开发资源,与其他开发者交流经验,共同进步。

相关推荐
传奇开心果编程8 小时前
【Flutter踩坑排雷】第28课:平台目录缺失与修复坑|`flutter create` 的“重建”与“覆盖”边界
android·flutter·ios·移动开发·跨平台·dart·声明式ui
程序员老刘·1 天前
Flutter 3.50更新,开发者应该关注什么?
flutter·ai编程·跨平台开发
传奇开心果编程2 天前
【Flutter踩坑排雷】第25课:ScrollController 误用坑|跳转失效、监听泄漏与“控制器未附加”
android·flutter·ios·移动开发·跨平台·dart·声明式ui
程序员老刘2 天前
Flutter 3.50更新,开发者应该关注什么?
flutter·ai编程·客户端
好的佩奇3 天前
Dart 之集合元素
android·flutter·dart
恋猫de小郭3 天前
Flutter 3.50 & Dart 3.14 发布,快来看看有什么更新吧
android·前端·flutter
喵个咪4 天前
GoWind CMS 拆解:Flutter 设计系统内核——双态 token、四档断点与自适应壳层
前端·flutter·交互设计
恋猫de小郭4 天前
Flutter 大小核优化又被回滚,然后又开新提案?
android·前端·flutter
好的佩奇5 天前
蓝牙之广播与扫描
android·flutter·蓝牙