【Flutter For OpenHarmony】TechHub技术资讯界面开发

导语

在之前的实战中,我们虽然实现了网络数据的获取与展示,但"技术资讯"模块依然停留在一个简单的 Demo 阶段: 数据源 为无意义的文字、UI 交互单一(只有列表并无详情)。

为了让 TechHub 名副其实,我们对内容模块进行了重构。我们引入了技术文章数据模型,实现了 Markdown 详情页渲染,并打通了列表到详情的交互闭环,提升了应用的实用性。

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

一、 数据源优化:丰富内容维度

1. 扩展数据模型

为了承载丰富的技术文章信息,我们对 Post 模型进行了扩展,不再局限于简单的 titlebody

dart 复制代码
// lib/models/post.dart
class Post {
  final int id;
  final String title;
  final String author;      // 新增:作者
  final String category;    // 新增:分类(如 Flutter/OpenHarmony)
  final String publishDate; // 新增:发布时间
  final String imageUrl;    // 新增:封面图
  // ...
}

2. 模拟真实数据流

在后端 API 尚未就绪的情况下,我们在 ApiService 中通过"数据拦截"的方式,将 jsonplaceholder 返回的数据动态替换为模拟的技术文章数据。

dart 复制代码
// lib/services/api_service.dart
final List<String> _techTitles = [
  'Flutter 3.0 新特性全解析',
  'OpenHarmony 应用开发入门指南',
  'Dart 语言异步编程最佳实践',
  // ...
];

// 在 fetchPosts 中进行 Mock 注入
return data.map((json) {
  return Post(
    // ...
    title: _techTitles[post.id % _techTitles.length],
    category: post.id % 2 == 0 ? 'Flutter 开发' : 'OpenHarmony 实战',
    // ...
  );
}).toList();

这样,用户在列表中看到的不再是乱码,而是"Flutter 性能优化"、"鸿蒙 ArkUI 实战"等贴近开发者场景的内容。

二、 详情页开发:Markdown 渲染实战

技术文章往往包含大量的代码块、引用和列表,普通的文本组件难以满足展示需求。因此,我们引入了 flutter_markdown 库来提供更好的阅读体验。

1. 依赖添加

pubspec.yaml 中添加依赖:

yaml 复制代码
dependencies:
  flutter_markdown: ^0.6.14

2. 构建 PostDetailPage

新建 lib/pages/post_detail_page.dart,我们使用 Markdown 组件来解析和渲染文章内容,并自定义了样式表(StyleSheet)以匹配 App 的设计语言。

dart 复制代码
Markdown(
  data: markdownContent,
  styleSheet: MarkdownStyleSheet(
    h1: Theme.of(context).textTheme.headlineMedium,
    code: TextStyle(
      backgroundColor: Colors.grey.shade200,
      fontFamily: 'monospace', // 等宽字体显示代码
    ),
    // ...
  ),
)

现在,文章中的 Dart 代码片段、引用块和图片都能被正常渲染。

三、 交互升级:从列表到详情

最后,我们改造了列表页的 Card 组件,使用 InkWell 包裹内容,响应用户的点击事件。

dart 复制代码
// lib/pages/post_list_page.dart
InkWell(
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => PostDetailPage(post: post),
      ),
    );
  },
  child: Column(
    // ... 更精致的卡片布局:包含作者头像、分类标签等
  ),
)

同时,我们对卡片 UI 进行了升级,增加了作者头像、发布时间和分类标签,使列表信息更加直观。

四、 总结

通过本次重构,TechHub 的资讯模块完成了优化:

  1. 数据真实化:模拟了贴近实际场景的技术内容。
  2. 展示专业化:支持 Markdown 渲染,适合技术文章阅读。
  3. 交互完整化:实现了列表 -> 详情的跳转。

现在的 TechHub,已经不再是一个空壳 Demo,而是一个初具雏形的技术社区客户端。

参考资源:

本项目代码已托管至 AtomGit:https://atomgit.com/Betelgeuse76/my_first_ohos_app

相关推荐
铅笔侠_小龙虾2 小时前
Flutter 安装&配置
flutter
国服第二切图仔3 小时前
openJiuwen智能体平台部署搭建及政务通助手工作流智能体开发实战
华为·政务·智能体
大雷神3 小时前
HarmonyOS智慧农业管理应用开发教程--高高种地-- 第33篇:应用打包、签名与发布
华为·harmonyos
mocoding3 小时前
使用已经完成鸿蒙化适配的Flutter本地持久化存储三方库shared_preferences让你的应用能够保存用户偏好设置、缓存数据等
flutter·华为·harmonyos·鸿蒙
方见华Richard3 小时前
AGI安全三大方向机构对比清单(2025-2026)
人工智能·经验分享·交互·原型模式·空间计算
zhuweisky4 小时前
ArkTS实现鸿蒙手机视频聊天、屏幕分享(HarmonyOS)
音视频·harmonyos·鸿蒙开发
无熵~5 小时前
Flutter入门
flutter
hudawei9965 小时前
要控制动画的widget为什么要with SingleTickerProviderStateMixin
flutter·mixin·with·ticker·动画控制
大雷神5 小时前
HarmonyOS智慧农业管理应用开发教程--高高种地--第32篇:应用测试、优化与调试
华为·harmonyos