鸿蒙版Flutter快递查询助手
一个使用Flutter开发的鸿蒙原生应用,提供便捷的快递查询服务,支持物流跟踪、短信通知和电话联系等功能。
开发背景
随着电子商务的快速发展,快递服务已成为人们日常生活中不可或缺的一部分。然而,用户经常需要在多个平台之间切换来查询不同快递公司的物流信息,体验不够便捷。
本项目旨在解决这一痛点,通过整合多家快递公司的查询接口,提供统一的查询入口,让用户能够便捷地追踪任何快递包裹的物流状态。同时,项目特别针对鸿蒙系统进行了原生适配,为鸿蒙用户提供流畅的使用体验。
作为一个开源项目,我们希望能够帮助更多的开发者了解Flutter与鸿蒙系统的结合开发,推动跨平台应用在鸿蒙生态中的发展。
功能特点
- 快递查询:支持多家快递公司查询(顺丰、圆通、中通等)
- 智能识别:自动识别快递公司,无需手动选择
- 物流跟踪:实时跟踪物流信息,及时了解包裹状态
- 时间轴展示:美观的时间轴展示物流进度和详细信息
- 历史记录:保存查询历史,方便再次查询
- 短信通知:支持将物流信息通过短信发送给他人
- 一键拨号:提供客服电话一键拨打功能
- 鸿蒙适配:针对鸿蒙系统进行了原生适配,提供流畅体验
多平台支持
本项目基于Flutter跨平台框架开发,支持多种操作系统和设备:
- 鸿蒙OS:针对华为设备进行了原生适配
- Android:支持Android 5.0及以上版本
- iOS:支持iOS 11.0及以上版本
- Web:可部署为网页应用,支持主流浏览器
- macOS:支持macOS 10.14及以上版本
- Windows:支持Windows 10及以上版本
- Linux:支持Ubuntu 18.04及以上版本
效果
鸿蒙



macos



技术栈
- Flutter框架
- 鸿蒙OS适配
- HTTP网络请求
- 响应式UI设计
- 状态管理
- 本地存储
- 短信发送集成
- 电话拨打功能
核心功能实现
短信发送功能
应用集成了短信发送功能,可以将快递物流信息通过短信分享给他人:
dart
// 短信发送功能实现
Future<void> sendSms(BuildContext context, {String? trackingInfo}) async {
String defaultNumber = '17752170152';
String message;
if (trackingInfo != null && trackingInfo.isNotEmpty) {
// 发送物流信息
message = '您的快递最新状态: $trackingInfo';
} else {
// 发送应用介绍
message = '快递查询助手是一款便捷的快递查询工具...';
}
// 显示对话框让用户输入电话号码
await showSmsDialog(context, defaultNumber, message);
}
电话拨打功能
应用提供了一键拨打客服电话的功能:
dart
// 电话拨打功能实现
Future<void> _callNumber(BuildContext context) async {
const String number = '17752170152';
try {
// 使用FlutterPhoneDirectCaller拨号
bool? result = await FlutterPhoneDirectCaller.callNumber(number);
if (result != true) {
// 如果直接拨号失败,显示提示
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('无法拨打电话,请手动拨打: 17752170152')),
);
}
}
} catch (e) {
// 错误处理
}
}
## 安装方式
### 通用安装
```bash
# 克隆仓库
git clone git@gitcode.com:nutpi/flutter_express_tracker.git
# 进入项目目录
cd flutter_express_tracker
# 安装依赖
flutter pub get
# 运行应用
flutter run
# 运行Web版本
flutter run -d chrome
# 运行macOS版本
flutter run -d macos
# 运行Linux版本
flutter run -d linux
# 运行Windows版本
flutter run -d windows
# 构建Web版本
flutter build web
# 构建macOS应用
flutter build macos
# 构建Linux应用
flutter build linux
# 构建Windows应用
flutter build windows
贡献指南
欢迎提交问题和功能请求,或直接提交代码贡献。请确保遵循项目的代码风格和提交规范。
版权信息
MIT License
作者:坚果派 公众号:nutpi 电话:17752170152 官网: https://www.nutpi.net/
参考
历史记录管理
应用实现了本地历史记录管理功能,方便用户查看和管理已查询的快递信息:
dart
// 历史记录管理实现
class TrackingHistoryService {
final _prefs = SharedPreferences.getInstance();
static const _historyKey = 'tracking_history';
// 保存查询记录
Future<void> saveTrackingHistory(TrackingHistory history) async {
final prefs = await _prefs;
List<String> histories = prefs.getStringList(_historyKey) ?? [];
histories.insert(0, jsonEncode(history.toJson()));
await prefs.setStringList(_historyKey, histories);
}
// 获取历史记录
Future<List<TrackingHistory>> getTrackingHistories() async {
final prefs = await _prefs;
List<String> histories = prefs.getStringList(_historyKey) ?? [];
return histories
.map((e) => TrackingHistory.fromJson(jsonDecode(e)))
.toList();
}
}
性能优化
为确保应用的流畅运行,我们采取了以下优化措施:
- 懒加载:页面组件采用懒加载方式,减少初始加载时间
- 缓存管理:实现智能缓存机制,减少网络请求
- 状态管理:使用Provider进行高效的状态管理
- 图片优化:实现图片懒加载和压缩
- 网络优化:请求合并和数据预加载
项目架构
项目采用清晰的分层架构设计:
lib/
├── main.dart # 应用入口
├── models/ # 数据模型
│ ├── tracking_model.dart
│ └── tracking_history_model.dart
├── pages/ # 页面组件
│ ├── tracking_page.dart
│ └── history_page.dart
├── services/ # 业务逻辑
│ ├── tracking_service.dart
│ └── history_service.dart
└── utils/ # 工具类
└── http_util.dart
依赖管理
项目使用了以下主要依赖:
yaml
dependencies:
# 网络请求
http: ^1.1.0
# 状态管理
provider: ^6.1.2
# 本地存储
shared_preferences: ^2.2.2
# UI组件
flutter_animate: ^4.5.0
fl_chart: ^0.66.2
鸿蒙适配
为支持鸿蒙系统,我们进行了以下适配:
-
原生API适配:
- 短信发送接口适配
- 电话拨打功能适配
- 本地存储接口适配
- 触摸事件和手势处理适配
-
UI适配:
- 遵循鸿蒙设计规范
- 支持鸿蒙手势操作(包括点击、长按、拖拽等)
- 适配不同屏幕尺寸和分辨率
- 兼容鸿蒙系统的视图层次结构
-
性能优化:
- 针对鸿蒙系统进行性能调优
- 优化启动速度和运行内存
- 减少不必要的视图重绘和布局计算
使用指南
快递查询
- 在首页输入快递单号
- 系统自动识别快递公司
- 点击查询按钮获取物流信息
- 查看物流详情和时间轴展示
历史记录
- 点击底部导航栏的"历史"标签
- 查看已查询的快递记录
- 点击记录可重新查询
- 左滑删除不需要的记录
分享功能
- 在物流详情页点击分享按钮
- 选择短信分享方式
- 输入接收方手机号
- 确认发送物流信息
常见问题
-
为什么无法识别快递公司?
- 确保输入的快递单号正确
- 部分新增快递公司可能暂不支持自动识别
-
如何处理查询失败?
- 检查网络连接
- 确认快递单号是否正确
- 尝试手动选择快递公司
-
短信发送失败怎么办?
- 检查是否授予应用短信权限
- 确认手机号格式正确
- 检查短信服务是否可用
-
收到"设备不支持发送短信"错误怎么办?
- 这是因为某些设备(如模拟器、平板电脑或某些电脑版本)不支持发送短信功能
- 错误信息"PlatformException(device_not_capable)"表示当前设备硬件不支持短信功能
- 解决方案:
- 尝试使用其他分享方式,如复制文本或使用其他通讯应用
- 在支持短信功能的移动设备上使用该应用
- 如果在鸿蒙设备上遇到此问题,请确保已授予相应权限并使用最新版本的系统
更新日志
v1.0.0 (2025-03-08)
- 首次发布
- 支持多家快递公司查询
- 实现短信通知功能
- 支持历史记录管理
v1.0.1 (2025-03-09)
- 优化查询速度
- 修复已知问题
- 改进UI交互体验
- 增加更多快递公司支持