Flutter 框架跨平台鸿蒙开发 - AR历史场景穿越

AR历史场景穿越应用


欢迎加入开源鸿蒙跨平台社区:

https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图

1.1 应用简介

AR历史场景穿越是一款沉浸式教育学习应用,通过增强现实技术将历史场景重现于现实世界。用户站在历史事件发生地,通过手机摄像头即可看到历史场景重演,身临其境地感受历史时刻,实现跨越时空的学习体验。应用涵盖古今中外重大历史事件,支持多角度观察、互动探索、知识讲解等功能,让历史学习变得生动有趣。

应用以深邃的蓝紫色为主色调,象征历史的厚重与时空的神秘。涵盖场景探索、知识学习、互动体验、个人中心四大模块。用户可以选择历史时期、定位历史地点、观看场景重演、参与互动体验,在虚拟与现实的交融中深度学习历史。

1.2 核心功能

功能模块 功能描述 实现方式
历史场景 12个历史时期场景 AR渲染引擎
场景重演 3D历史事件重现 ARCore/ARKit
地点定位 GPS历史地点识别 定位服务
互动体验 场景交互与探索 手势识别
知识讲解 语音与文字解说 多媒体播放
收藏记录 学习历程保存 本地数据库

1.3 历史时期定义

序号 时期名称 Emoji 描述
1 秦汉时期 🏛️ 帝国崛起,统一天下
2 三国两晋 ⚔️ 英雄辈出,群雄逐鹿
3 隋唐盛世 🏯 开元盛世,万国来朝
4 宋元时期 📜 文化繁荣,商业发达
5 明清时期 🏰 帝国黄昏,变革前夜
6 近代革命 🔥 民族觉醒,浴火重生
7 古埃及 🏺 尼罗河畔,金字塔奇迹
8 古希腊 🏛️ 哲学摇篮,民主起源
9 古罗马 🏟️ 帝国荣耀,角斗士传奇
10 中世纪 🏰 骑士精神,城堡风云
11 文艺复兴 🎨 艺术觉醒,人文光辉
12 工业革命 ⚙️ 机器轰鸣,时代变革

1.4 场景类型定义

序号 场景类型 Emoji 互动性 描述
1 战争场景 ⚔️ 战场实况,策略体验
2 宫廷场景 👑 朝堂议事,权力博弈
3 民俗场景 🏘️ 市井生活,文化体验
4 建筑场景 🏛️ 古建筑复原,工艺展示
5 节庆场景 🎉 传统节日,民俗活动
6 科技场景 🔬 发明创造,科技历程

1.5 互动等级定义

序号 等级名称 Emoji 互动深度
1 观赏模式 👀 仅观看,无互动
2 探索模式 🔍 可移动视角,查看细节
3 互动模式 👆 可与场景元素交互
4 沉浸模式 🎮 完整角色扮演体验

1.6 知识模块定义

序号 模块名称 Emoji 内容类型
1 历史背景 📖 文字+图片
2 人物传记 👤 图文+音频
3 事件解析 📊 时间轴+地图
4 文物鉴赏 🏺 3D模型+解说
5 文化传承 🎭 视频+互动
6 趣味问答 互动答题

1.7 技术栈

技术领域 技术选型 版本要求
开发框架 Flutter >= 3.0.0
编程语言 Dart >= 2.17.0
AR引擎 ARCore/ARKit -
3D渲染 Flutter 3D -
定位服务 Geolocator >= 9.0.0
地图服务 高德/百度地图 -
设计规范 Material Design 3 -
目标平台 鸿蒙OS / iOS / Android API 21+

1.8 项目结构

复制代码
lib/
└── main_ar_history_journey.dart
    ├── ARHistoryJourneyApp              # 应用入口
    ├── HistoricalPeriod                 # 历史时期枚举
    ├── SceneType                        # 场景类型枚举
    ├── InteractionLevel                 # 互动等级枚举
    ├── KnowledgeModule                  # 知识模块枚举
    ├── HistoricalScene                  # 历史场景模型
    ├── UserProgress                     # 用户进度模型
    ├── ARHistoryJourneyHomePage         # 主页面(底部导航)
    ├── _buildExplorePage                # 探索页面
    ├── _buildKnowledgePage              # 知识页面
    ├── _buildCollectionPage             # 收藏页面
    ├── _buildProfilePage                # 个人页面
    ├── ARSceneRenderer                  # AR场景渲染器
    └── KnowledgePresenter               # 知识展示器

二、系统架构

2.1 整体架构图

Data Layer
Business Layer
Presentation Layer
主页面

ARHistoryJourneyHomePage
探索页
知识页
收藏页
个人页
AR相机
场景选择
地点定位
互动控制
知识模块
学习路径
收藏列表
学习记录
成就系统
设置选项
AR场景管理器

ARSceneManager
知识引擎

KnowledgeEngine
定位服务

LocationService
进度管理器

ProgressManager
HistoricalScene

历史场景
UserProgress

用户进度
KnowledgeContent

知识内容
LocationData

地点数据

2.2 类图设计

has
has
has
tracks
belongs
ARHistoryJourneyApp
+Widget build()
<<enumeration>>
HistoricalPeriod
+String label
+String emoji
+String description
+DateRange dateRange
+qinHan()
+threeKingdoms()
+suiTang()
+songYuan()
+mingQing()
+modernRevolution()
+ancientEgypt()
+ancientGreece()
+ancientRome()
+medieval()
+renaissance()
+industrialRevolution()
<<enumeration>>
SceneType
+String label
+String emoji
+double interactivity
+war()
+palace()
+folk()
+architecture()
+festival()
+technology()
<<enumeration>>
InteractionLevel
+String label
+String emoji
+int depth
+observation()
+exploration()
+interaction()
+immersion()
HistoricalScene
+String id
+String name
+HistoricalPeriod period
+SceneType type
+InteractionLevel level
+Location location
+String description
+List<KnowledgeModule> modules
+DateTime createdAt
UserProgress
+String userId
+List<String> unlockedScenes
+Map<String, int> knowledgeProgress
+int totalStudyTime
+List<Achievement> achievements
+DateTime lastActiveAt
KnowledgeContent
+String id
+String title
+KnowledgeModule module
+String content
+List<String> mediaUrls
+Duration duration
KnowledgeModule

2.3 页面导航流程

探索
知识
收藏
我的


应用启动
探索页
底部导航
AR相机
知识库
收藏夹
个人中心
扫描环境
识别历史地点?
加载历史场景
显示附近地点
AR场景渲染
选择互动模式
体验历史场景
选择时期
浏览知识模块
学习知识内容
查看收藏场景
继续学习
查看成就
设置偏好

2.4 AR场景加载流程

场景管理器 AR引擎 定位服务 探索页 用户 场景管理器 AR引擎 定位服务 探索页 用户 打开AR相机 获取当前位置 返回GPS坐标 查询附近历史地点 返回匹配场景 选择历史场景 初始化AR会话 AR环境就绪 加载场景资源 返回3D模型与数据 渲染历史场景 显示AR场景 交互操作 更新场景状态 实时反馈


三、核心模块设计

3.1 数据模型设计

3.1.1 历史时期枚举 (HistoricalPeriod)
dart 复制代码
enum HistoricalPeriod {
  qinHan(
    label: '秦汉时期',
    emoji: '🏛️',
    description: '帝国崛起,统一天下',
    dateRange: ('公元前221年', '公元220年'),
  ),
  threeKingdoms(
    label: '三国两晋',
    emoji: '⚔️',
    description: '英雄辈出,群雄逐鹿',
    dateRange: ('公元220年', '公元420年'),
  ),
  suiTang(
    label: '隋唐盛世',
    emoji: '🏯',
    description: '开元盛世,万国来朝',
    dateRange: ('公元581年', '公元907年'),
  ),
  modernRevolution(
    label: '近代革命',
    emoji: '🔥',
    description: '民族觉醒,浴火重生',
    dateRange: ('1840年', '1949年'),
  );

  final String label;
  final String emoji;
  final String description;
  final (String, String) dateRange;
}
3.1.2 场景类型枚举 (SceneType)
dart 复制代码
enum SceneType {
  war(label: '战争场景', emoji: '⚔️', interactivity: 0.9),
  palace(label: '宫廷场景', emoji: '👑', interactivity: 0.6),
  folk(label: '民俗场景', emoji: '🏘️', interactivity: 0.8),
  architecture(label: '建筑场景', emoji: '🏛️', interactivity: 0.5),
  festival(label: '节庆场景', emoji: '🎉', interactivity: 0.85),
  technology(label: '科技场景', emoji: '🔬', interactivity: 0.7);

  final String label;
  final String emoji;
  final double interactivity;
}
3.1.3 历史场景模型 (HistoricalScene)
dart 复制代码
class HistoricalScene {
  final String id;                    // 场景ID
  final String name;                  // 场景名称
  final HistoricalPeriod period;      // 历史时期
  final SceneType type;               // 场景类型
  final InteractionLevel level;       // 互动等级
  final Location location;            // 地理位置信息
  final String description;           // 场景描述
  final List<KnowledgeModule> modules; // 知识模块列表
  final String arModelPath;           // AR模型路径
  final String audioGuidePath;        // 语音讲解路径
  final DateTime createdAt;           // 创建时间
}
3.1.4 用户进度模型 (UserProgress)
dart 复制代码
class UserProgress {
  final String userId;                      // 用户ID
  final List<String> unlockedScenes;        // 已解锁场景
  final Map<String, int> knowledgeProgress; // 知识模块进度
  final int totalStudyTime;                 // 总学习时长(分钟)
  final List<Achievement> achievements;     // 成就列表
  final Map<String, double> sceneRatings;   // 场景评分
  final DateTime lastActiveAt;              // 最后活跃时间
}
3.1.5 历史时期分布

18% 16% 15% 15% 14% 12% 10% 历史场景时期分布示例 秦汉时期 三国两晋 隋唐盛世 宋元时期 明清时期 近代革命 世界历史

3.2 页面结构设计

3.2.1 主页面布局

ARHistoryJourneyHomePage
IndexedStack
探索页
知识页
收藏页
个人页
NavigationBar
探索 Tab
知识 Tab
收藏 Tab
我的 Tab

3.2.2 探索页结构

探索页
SliverAppBar
AR相机视图
场景信息卡
互动控制面板
知识快捷入口
摄像头预览
AR场景叠加
交互提示
场景名称
历史时期
互动等级
模式切换
缩放控制
旋转控制
语音讲解
文字说明
相关场景

3.2.3 AR场景渲染结构

AR场景
环境感知层
历史场景层
交互元素层
信息展示层
音效氛围层
平面检测
光照估计
环境映射
3D模型
动画系统
物理引擎
可交互对象
触发区域
反馈效果
悬浮标签
引导箭头
进度指示
背景音乐
环境音效
语音解说

3.2.4 知识页结构

知识页
时期选择器
知识模块网格
学习进度条
知识卡片
模块图标
模块名称
完成进度
进入学习

3.3 AR场景处理逻辑



点击对象
移动视角
切换模式
启动AR会话
初始化AR引擎
检测环境平面
找到合适平面?
加载历史场景
放置3D模型
设置光照效果
添加交互元素
用户互动?
触发知识讲解
更新场景视角
调整互动等级
播放多媒体内容
渲染新视角
重新配置场景

3.4 知识学习流程

文字
音频
视频
互动




选择知识模块
加载知识内容
内容类型
显示图文内容
播放语音讲解
播放历史视频
启动互动问答
记录学习进度
答题正确?
获得积分奖励
显示正确答案
模块完成?
解锁成就
继续学习


四、UI设计规范

4.1 配色方案

应用以深邃的蓝紫色为主色调,象征历史的厚重与时空的神秘:

颜色类型 色值 用途
主色 #5C6BC0 (Indigo) 导航、主题元素
辅助色 #7986CB 知识页面
第三色 #9FA8DA 收藏页面
强调色 #C5CAE9 个人页面
背景色 #FAFAFA 页面背景
卡片背景 #FFFFFF 知识卡片
AR叠加色 #1A237E AR界面元素

4.2 历史时期主题色

时期 色值 视觉效果
秦汉时期 #8B4513 青铜古韵
三国两晋 #CD5C5C 战火纷飞
隋唐盛世 #DAA520 金碧辉煌
宋元时期 #708090 文雅素净
明清时期 #B22222 朱红宫墙
近代革命 #FF4500 革命烈火
古埃及 #DAA520 金沙璀璨
古希腊 #4682B4 爱琴海蓝
古罗马 #8B0000 帝国深红
中世纪 #2F4F4F 城堡灰石
文艺复兴 #DAA520 艺术金辉
工业革命 #2F4F4F 钢铁灰调

4.3 字体规范

元素 字号 字重 颜色
页面标题 24px Bold 主色
场景名称 18px Bold #000000
时期标签 14px Medium 白色
知识内容 14px Regular #333333
进度数字 20px Bold 主色

4.4 组件规范

4.4.1 时期选择卡片
复制代码
┌─────────────────────────────────────┐
│  选择历史时期                        │
│                                     │
│  ┌──────┐ ┌──────┐ ┌──────┐        │
│  │  🏛️  │ │  ⚔️  │ │  🏯  │        │
│  │秦汉  │ │三国  │ │隋唐  │        │
│  │帝国  │ │英雄  │ │盛世  │        │
│  └──────┘ └──────┘ └──────┘        │
└─────────────────────────────────────┘
4.4.2 场景类型芯片
复制代码
┌─────────────────────────────────────┐
│  场景类型                            │
│                                     │
│  [⚔️ 战争场景] [👑 宫廷场景]        │
│  [🏘️ 民俗场景] [🏛️ 建筑场景]        │
│  [🎉 节庆场景] [🔬 科技场景]        │
└─────────────────────────────────────┘
4.4.3 互动等级选择
复制代码
┌─────────────────────────────────────┐
│  互动模式                            │
│                                     │
│  👀 观赏模式  🔍 探索模式            │
│  👆 互动模式  🎮 沉浸模式            │
└─────────────────────────────────────┘
4.4.4 AR场景预览区域
复制代码
┌─────────────────────────────────────┐
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  │         🏛️                  │   │
│  │      [AR场景渲染区域]        │   │
│  │                             │   │
│  │              ┌────────────┐ │   │
│  │              │ 🏛️ 秦汉时期│ │   │
│  └──────────────┴────────────┘─┘   │
│  [互动] [讲解] [收藏] [分享]        │
└─────────────────────────────────────┘
4.4.5 知识模块卡片
复制代码
┌─────────────────────────────────────┐
│  知识模块                            │
│                                     │
│  ┌────────┐ ┌────────┐ ┌────────┐  │
│  │  📖    │ │  👤    │ │  📊    │  │
│  │历史背景│ │人物传记│ │事件解析│  │
│  │ 85%    │ │ 60%    │ │ 40%    │  │
│  └────────┘ └────────┘ └────────┘  │
└─────────────────────────────────────┘

五、核心功能实现

5.1 AR场景初始化实现

dart 复制代码
class ARSceneRenderer extends StatefulWidget {
  final HistoricalScene scene;
  final InteractionLevel level;

  @override
  _ARSceneRendererState createState() => _ARSceneRendererState();
}

class _ARSceneRendererState extends State<ARSceneRenderer> {
  ARSessionManager? _arSessionManager;
  ARObjectManager? _arObjectManager;
  
  @override
  void initState() {
    super.initState();
    _initializeARSession();
  }

  Future<void> _initializeARSession() async {
    _arSessionManager = ARSessionManager(
      reference: _arViewKey,
      onPlaneDetected: _onPlaneDetected,
      onSessionInit: _onSessionInit,
    );
    
    await _arSessionManager!.initialize();
  }

  void _onPlaneDetected(ARPlane plane) {
    _placeHistoricalScene(plane);
  }

  Future<void> _placeHistoricalScene(ARPlane plane) async {
    final node = ARNode(
      type: NodeType.localGLTF2,
      uri: widget.scene.arModelPath,
      scale: Vector3(1.0, 1.0, 1.0),
      position: plane.center,
      rotation: Vector4(0, 1, 0, 0),
    );
    
    await _arObjectManager!.addNode(node);
    _setupInteractionElements(node);
  }
}

5.2 互动元素实现

dart 复制代码
void _setupInteractionElements(ARNode sceneNode) {
  switch (widget.level) {
    case InteractionLevel.observation:
      _enableObservationMode(sceneNode);
      break;
    case InteractionLevel.exploration:
      _enableExplorationMode(sceneNode);
      break;
    case InteractionLevel.interaction:
      _enableInteractionMode(sceneNode);
      break;
    case InteractionLevel.immersion:
      _enableImmersionMode(sceneNode);
      break;
  }
}

void _enableInteractionMode(ARNode node) {
  _arObjectManager!.onNodeTap = (tappedNodes) {
    for (final tappedNode in tappedNodes) {
      _showKnowledgeContent(tappedNode);
    }
  };
  
  _arObjectManager!.onNodePan = (pannedNode, delta) {
    _rotateSceneObject(pannedNode, delta);
  };
}

5.3 知识讲解实现

dart 复制代码
class KnowledgePresenter extends StatelessWidget {
  final KnowledgeContent content;
  final VoidCallback onComplete;

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
      ),
      child: Column(
        children: [
          _buildHeader(),
          _buildContent(),
          _buildControls(),
        ],
      ),
    );
  }

  Widget _buildContent() {
    switch (content.module) {
      case KnowledgeModule.background:
        return _buildTextContent();
      case KnowledgeModule.biography:
        return _buildAudioContent();
      case KnowledgeModule.artifact:
        return _build3DModelContent();
      case KnowledgeModule.quiz:
        return _buildInteractiveQuiz();
      default:
        return _buildTextContent();
    }
  }
}

5.4 定位服务实现

dart 复制代码
class LocationService {
  final GeolocatorPlatform _geolocator;
  
  Future<List<HistoricalScene>> getNearbyScenes() async {
    final position = await _geolocator.getCurrentPosition();
    
    final scenes = await _sceneRepository.findByLocation(
      latitude: position.latitude,
      longitude: position.longitude,
      radiusInKm: 10.0,
    );
    
    return scenes;
  }

  Stream<LocationStatus> monitorLocationChanges() {
    return _geolocator.getPositionStream().map((position) {
      return LocationStatus(
        currentLocation: position,
        nearbyScenesCount: _calculateNearbyScenes(position),
      );
    });
  }
}

5.5 进度管理实现

dart 复制代码
class ProgressManager {
  final Database _database;
  
  Future<void> recordStudyProgress({
    required String userId,
    required String sceneId,
    required String moduleId,
    required int progress,
  }) async {
    await _database.insert('study_progress', {
      'user_id': userId,
      'scene_id': sceneId,
      'module_id': moduleId,
      'progress': progress,
      'timestamp': DateTime.now().millisecondsSinceEpoch,
    });
    
    await _checkAchievements(userId);
  }

  Future<void> _checkAchievements(String userId) async {
    final progress = await getUserProgress(userId);
    
    if (progress.unlockedScenes.length >= 10) {
      await _unlockAchievement(userId, 'history_explorer');
    }
    
    if (progress.totalStudyTime >= 600) {
      await _unlockAchievement(userId, 'history_scholar');
    }
  }
}

六、交互设计

6.1 AR探索流程

场景管理器 AR引擎 探索页 用户 场景管理器 AR引擎 探索页 用户 打开AR相机 启动AR会话 环境就绪 扫描环境 检测平面 平面已识别 选择历史场景 加载场景 返回场景数据 渲染AR场景 显示历史场景 交互操作 更新场景 实时反馈

6.2 知识学习流程

历史背景
人物传记
事件解析
文物鉴赏
趣味问答
正确
错误


进入知识页
选择历史时期
显示知识模块
选择模块
阅读图文
听取讲解
查看时间轴
旋转3D模型
互动答题
记录进度
答题结果
获得积分
显示答案
模块完成?
解锁成就
继续学习

6.3 场景收藏流程

进入场景
点击知识点
收藏按钮
保存成功
点击场景
浏览场景
AR体验
知识学习
收藏场景
收藏列表
继续学习


七、扩展功能规划

7.1 后续版本规划

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 2024-03-31 2024-04-07 AR基础框架 场景渲染引擎 知识模块系统 多人协同体验 AI智能讲解 社交分享功能 VR全景模式 历史人物AI对话 教育机构版本 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 AR历史场景穿越应用开发计划

7.2 功能扩展建议

7.2.1 多人协同体验

协同功能:

  • 实时多人AR会话
  • 历史角色扮演
  • 团队任务挑战
  • 协作知识探索
7.2.2 AI智能讲解

AI功能:

  • 个性化学习路径
  • 智能问答系统
  • 历史人物对话
  • 场景智能推荐
7.2.3 教育机构版本

教育功能:

  • 班级管理系统
  • 学习进度追踪
  • 教学资源定制
  • 考核评估系统

八、注意事项

8.1 开发注意事项

  1. 性能优化:AR渲染需保持60fps流畅度

  2. 电量管理:AR应用耗电较大,需优化功耗

  3. 环境适应:不同光照条件下的AR效果稳定性

  4. 模型优化:3D模型需优化面数和纹理大小

  5. 用户体验:AR操作需提供清晰引导

8.2 常见问题

问题 原因 解决方案
AR场景抖动 追踪不稳定 优化特征点检测
模型加载慢 资源过大 压缩模型,分级加载
定位偏差 GPS精度不足 结合视觉定位
设备发热 渲染负载高 降低渲染质量
互动延迟 计算量大 异步处理优化

8.3 使用技巧

🏛️ AR历史场景穿越使用技巧 🏛️

场景选择建议

  • 秦汉时期:适合了解古代政治制度
  • 三国两晋:适合体验战争策略
  • 隋唐盛世:适合感受文化繁荣
  • 近代革命:适合学习革命精神

互动模式选择

  • 观赏模式:初次体验,了解场景
  • 探索模式:深入研究,查看细节
  • 互动模式:参与体验,深度学习
  • 沉浸模式:角色扮演,身临其境

学习路径建议

  • 先观看历史背景,建立整体认知
  • 再体验AR场景,感受历史氛围
  • 然后学习知识模块,深化理解
  • 最后参与互动问答,巩固知识

九、运行说明

9.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
ARCore >= 1.25.0 (Android)
ARKit >= 4.0 (iOS)
鸿蒙OS API 21+
设备要求 支持AR的设备

9.2 运行命令

bash 复制代码
# 查看可用设备
flutter devices

# 运行到iOS设备
flutter run -t lib/main_ar_history_journey.dart

# 运行到Android设备
flutter run -t lib/main_ar_history_journey.dart

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_ar_history_journey.dart

# 代码分析
flutter analyze lib/main_ar_history_journey.dart

十、总结

AR历史场景穿越应用通过场景探索、知识学习、互动体验、个人中心四大模块,为用户提供了一个沉浸式的历史学习平台。应用支持12个历史时期、6种场景类型、4级互动等级,让用户身临其境地感受历史时刻。

核心功能涵盖AR场景渲染、知识讲解系统、互动体验设计、进度管理四大模块。历史时期从秦汉到近代,从古埃及到工业革命,跨越中外千年历史;场景类型包括战争、宫廷、民俗、建筑等多种选择;互动等级从观赏到沉浸,满足不同学习需求;知识模块涵盖历史背景、人物传记、事件解析、文物鉴赏等内容。

应用采用 Material Design 3 设计规范,以深邃的蓝紫色为主色调,象征历史的厚重与时空的神秘。通过AR技术,将历史场景重现于现实世界,让用户在虚拟与现实的交融中深度学习历史,实现真正的"穿越时空"体验。

AR历史场景穿越------身临其境,触摸历史


相关推荐
AI_零食2 小时前
开源鸿蒙跨平台Flutter开发:手账记事模板库应用
学习·flutter·华为·开源·harmonyos·鸿蒙
提子拌饭1332 小时前
开源鸿蒙跨平台Flutter开发:家庭影像传承系统
flutter·华为·开源·harmonyos·鸿蒙
HwJack202 小时前
HarmonyOS NDK 开发:冲破 ArkUI 性能桎梏的“降维打击”
华为·harmonyos
李李李勃谦2 小时前
Flutter 框架跨平台鸿蒙开发 - 手工作品展示
flutter·华为·harmonyos
左手厨刀右手茼蒿2 小时前
Flutter 三方库 klutter 的鸿蒙化适配指南 - 掌握 Kotlin Multiplatform (KMP) 互操作技术、助力鸿蒙应用构建极致复用且高性能的跨端业务逻辑共享体系
flutter·harmonyos·鸿蒙·openharmony
世人万千丶2 小时前
开源鸿蒙跨平台Flutter开发:古诗词学习应用
学习·flutter·华为·开源·harmonyos·鸿蒙
2501_944448472 小时前
数据可视化 Kotlin KMP OpenHarmony图表生成
开发语言·信息可视化·harmonyos
枫叶丹43 小时前
【HarmonyOS 6.0】ArkWeb 深度解读:getPageOffset20 与网页滚动偏移量获取能力的演进
开发语言·华为·harmonyos
独特的螺狮粉3 小时前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙