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开发资源,与其他开发者交流经验,共同进步。

相关推荐
恋猫de小郭10 小时前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
张风捷特烈11 小时前
Flutter 类库大揭秘#01 | path_provider架构与设计
android·flutter
恋猫de小郭3 天前
Android 限制侧载新进展,谷歌联合国内厂商推验证计划
android·前端·flutter
恋猫de小郭3 天前
解读 Android 17 全新内存限制,有没有“豁免”后门?
android·前端·flutter
程序员老刘5 天前
跨平台开发地图 | 2026年6月
flutter·ai编程·客户端
悟空瞎说6 天前
Flutter 架构详解:新手必懂底层原理
flutter
SoaringHeart6 天前
Flutter最佳实践:IM聊天文字链接自动识别跳转
前端·flutter
恋猫de小郭6 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
风华圆舞7 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
韩曙亮7 天前
【Flutter】Flutter 组件 ④ ( 组件渲染 的 三棵树理论 | Widget 树 → Element 树 → RenderObject 树 )
flutter·element·widget·renderobject