1. 项目背景与核心需求
剧本杀作为近年来快速崛起的线下社交娱乐方式,对组队效率和店铺展示提出了更高要求。传统微信群组队存在信息混乱、店铺详情不透明等问题,这正是我们开发这款基于OpenHarmony的Flutter跨平台组队App的出发点。
这次要实现的店铺模块包含两个核心页面:
- 店铺列表页:需要展示周边5公里范围内的剧本杀店铺
- 店铺详情页:需完整呈现店铺环境、剧本库存、玩家评价等关键信息
技术选型上采用Flutter for OpenHarmony方案,主要考虑:
- 跨平台一致性:一套代码同时覆盖鸿蒙和安卓/iOS设备
- 性能表现:Flutter的Skia引擎在OpenHarmony上实测帧率可达60FPS
- 开发效率:Hot Reload特性大幅缩短UI调试时间
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体架构分层
采用经典的三层架构,但针对OpenHarmony做了特殊适配:
code复制UI层(Flutter Widgets)
↓
业务逻辑层(Dart+FFI)
↓
原生能力层(OpenHarmony ACE)
其中关键点在于:
- 使用dart:ffi调用OpenHarmony的地理定位服务
- 通过Platform Channel接入鸿蒙的分布式数据库
- 自定义MethodChannel处理鸿蒙特有的硬件加速能力
2.2 店铺数据模型设计
dart复制class ScriptShop {
final String id;
final String name;
final GeoPoint location; // 经纬度坐标
final double rating;
final List<String> coverImages;
final Map<String, int> scriptStock; // 剧本库存
final List<ShopReview> reviews;
// 计算属性:实时距离
double get distanceFromCurrent {
return Geolocator.distanceBetween(
_currentPosition.latitude,
_curren
