鸿蒙版Flutter快递查询助手

发布于:2025-03-10 ⋅ 阅读:(13) ⋅ 点赞:(0)

鸿蒙版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及以上版本

效果

鸿蒙

image-20250309120816038

image-20250308222956995

image-20250309081829781

macos

image-20250309085400013

image-20250309120759528

技术栈

  • Flutter框架
  • 鸿蒙OS适配
  • HTTP网络请求
  • 响应式UI设计
  • 状态管理
  • 本地存储
  • 短信发送集成
  • 电话拨打功能

核心功能实现

短信发送功能

应用集成了短信发送功能,可以将快递物流信息通过短信分享给他人:

// 短信发送功能实现
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);
}

电话拨打功能

应用提供了一键拨打客服电话的功能:

// 电话拨打功能实现
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.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/

参考

ohos平台适配flutter三方库指导

历史记录管理

应用实现了本地历史记录管理功能,方便用户查看和管理已查询的快递信息:

// 历史记录管理实现
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();
  }
}

性能优化

为确保应用的流畅运行,我们采取了以下优化措施:

  1. 懒加载:页面组件采用懒加载方式,减少初始加载时间
  2. 缓存管理:实现智能缓存机制,减少网络请求
  3. 状态管理:使用Provider进行高效的状态管理
  4. 图片优化:实现图片懒加载和压缩
  5. 网络优化:请求合并和数据预加载

项目架构

项目采用清晰的分层架构设计:

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

依赖管理

项目使用了以下主要依赖:

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

鸿蒙适配

为支持鸿蒙系统,我们进行了以下适配:

  1. 原生API适配

    • 短信发送接口适配
    • 电话拨打功能适配
    • 本地存储接口适配
    • 触摸事件和手势处理适配
  2. UI适配

    • 遵循鸿蒙设计规范
    • 支持鸿蒙手势操作(包括点击、长按、拖拽等)
    • 适配不同屏幕尺寸和分辨率
    • 兼容鸿蒙系统的视图层次结构
  3. 性能优化

    • 针对鸿蒙系统进行性能调优
    • 优化启动速度和运行内存
    • 减少不必要的视图重绘和布局计算

使用指南

快递查询

  1. 在首页输入快递单号
  2. 系统自动识别快递公司
  3. 点击查询按钮获取物流信息
  4. 查看物流详情和时间轴展示

历史记录

  1. 点击底部导航栏的"历史"标签
  2. 查看已查询的快递记录
  3. 点击记录可重新查询
  4. 左滑删除不需要的记录

分享功能

  1. 在物流详情页点击分享按钮
  2. 选择短信分享方式
  3. 输入接收方手机号
  4. 确认发送物流信息

常见问题

  1. 为什么无法识别快递公司?

    • 确保输入的快递单号正确
    • 部分新增快递公司可能暂不支持自动识别
  2. 如何处理查询失败?

    • 检查网络连接
    • 确认快递单号是否正确
    • 尝试手动选择快递公司
  3. 短信发送失败怎么办?

    • 检查是否授予应用短信权限
    • 确认手机号格式正确
    • 检查短信服务是否可用
  4. 收到"设备不支持发送短信"错误怎么办?

    • 这是因为某些设备(如模拟器、平板电脑或某些电脑版本)不支持发送短信功能
    • 错误信息"PlatformException(device_not_capable)"表示当前设备硬件不支持短信功能
    • 解决方案:
      • 尝试使用其他分享方式,如复制文本或使用其他通讯应用
      • 在支持短信功能的移动设备上使用该应用
      • 如果在鸿蒙设备上遇到此问题,请确保已授予相应权限并使用最新版本的系统

更新日志

v1.0.0 (2025-03-08)

  • 首次发布
  • 支持多家快递公司查询
  • 实现短信通知功能
  • 支持历史记录管理

v1.0.1 (2025-03-09)

  • 优化查询速度
  • 修复已知问题
  • 改进UI交互体验
  • 增加更多快递公司支持