Flutter插件hailify的介绍及使用

Description

此插件允许您的Flutter客户端应用程序集成Hailify任务交付功能。通过Hailify,您可以轻松地将物流功能嵌入到您的应用中。

支持的平台

  • Android [部署在Android 6(Marshmallow)或更高版本]
  • iOS [部署在iOS 13或更高版本]

Step 1: 添加Hailify包到您的应用

要使用此插件,请在pubspec.yaml文件中添加以下依赖项:

dependencies:
  hailify: ^0.0.1

Android安装

android/build.gradle文件中,添加以下内容到allprojects/repositories部分:

maven {
    url 'https://hailifyfleet.jfrog.io/artifactory/hailifyfleet'
    // Hailify会为您提供用户名和密码以下载SDK
    credentials{
        username "USER_NAME"
        password "PASSWORD"
    }
}

iOS安装

  1. ios/Podfile中添加以下内容:
use_frameworks!

# 设置所有Pod的目标为 'BUILD_LIBRARY_FOR_DISTRIBUTION' = 'YES'
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
  end
end
  1. 在终端中运行以下命令以安装依赖:
pod install

注意: 如果尚未添加以下权限,请在ios/Runner/Info.plist中添加。如果已经存在,请忽略。

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>此应用收集您的位置数据以改善取件和派送,并增强安全性。您可以在设备设置中随时关闭位置服务。</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>此应用收集您的位置数据以改善取件和派送,并增强安全性。您可以在设备设置中随时关闭位置服务。</string>

<key>NSCameraUsageDescription</key>
<string>此应用将使用相机拍摄照片以确认包裹交付。</string>

<key>NSPhotoLibraryUsageDescription</key>
<string>此应用将使用相册选择交付包裹。</string>

此外,在Xcode的Capabilities选项卡中启用后台定位。


Step 2: 导入插件

在主文件或需要使用Hailify的地方导入插件:

import 'package:hailify/hailify.dart';

Step 3: 初始化SDK

使用您的公司名称和提供的令牌初始化Hailify SDK:

Hailify.initilize("<fleet-name>", "<fleet-token>");

注意: Hailify将提供沙盒环境和生产环境的SDK密钥和令牌。


Step 4: 设置司机ID

设置与组织注册的司机ID:

Hailify.setDriverId("<driver-id>");

Step 5: 打开订单视图

调用此方法以显示订单弹窗:

Hailify.showOrderPopup();

注意: 应在从分配司机端点(AssignBooking)收到成功响应后调用此方法。


沙箱环境

启用或禁用沙箱环境以测试订单:

Hailify.enableSandbox(true/false);

默认值为false


位置引擎

允许Hailify SDK使用其内置的位置引擎:

Hailify.useSDKLocationEngine(true/false);

默认值为false。如果禁用,则可以手动设置位置:

Hailify.useSDKLocationEngine(false);
Hailify.setLocation(latitude, longitude, accuracy);

初始化交付视图

在应用中添加交付视图:

Hailify.initializeDeliveryView(() => {
  // 初始化完成后执行的操作
});

导航监听器(可选)

自定义导航选项:

Hailify.setNavigationListener((latitude, longitude) => {
  log("导航位置: " + latitude.toString() + ", " + longitude.toString());
});

注意: 必须在交付视图成功初始化后设置此监听器。


订单状态监听器(可选)

获取当前订单的状态更新:

Hailify.setOrderStatusListener((orderStatus, orderId) => {
  log("订单状态: " + orderStatus + ", 订单ID: " + orderId);
});

订单完成监听器(可选)

订单完成后的回调:

Hailify.setCompleteListener(() => {
  log("订单完成处理程序");
});

呼叫监听器(可选)

自定义呼叫选项:

Hailify.setCallListener((number) => {
  log("电话号码: " + number);
});

获取订单状态(可选)

在任何时间获取当前订单状态:

Hailify.getCurrentOrderStatus.then((status) => {
  log("当前订单状态: " + status.toString());
});

设置交付视图的高度(可选)

根据需求设置交付视图的高度:

Hailify.setMaxHeightPercentage(80);

交付状态

状态 描述
booked 订单已创建,快递员即将出发
to_pickup 快递员正在前往取件地点
at_pickup 快递员已在取件地点
to_delivery 快递员已取件,正在前往交付地点
at_delivery 快递员已在交付地点
to_return 快递员返回途中
returned 订单已退回
delivered 订单已完成
cancelled 订单已取消
failed 因商户或客户问题未完成订单

快速示例

以下是一个完整的示例代码:

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    try {
      Hailify.initilize("<fleet-name>", "<fleet-token>");
      Hailify.enableSandbox(true);
      Hailify.useSDKLocationEngine(true);
      Hailify.setDriverId("<driver-id>");

      Hailify.initializeDeliveryView(() => {
        Hailify.setMaxHeightPercentage(90)
      });

      Hailify.setCallListener((number) => {
        log("电话号码: " + number)
      });

      Hailify.setOrderStatusListener((orderStatus, orderId) => {
        log("订单状态: " + orderStatus + ", 订单ID: " + orderId)
      });

      Hailify.setNavigationListener((latitude, longitude) => {
        log("导航位置: " + latitude.toString() + ", " + longitude.toString())
      });

      Hailify.setCompleteListener(() => {
        log("订单完成处理程序")
      });

      Hailify.showOrderPopup();

      Hailify.getCurrentOrderStatus.then((status) => {
        log("当前订单状态: " + status.toString())
      });
    } on PlatformException {}
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: TextButton(child: Text('Hello World'), onPressed: null),
        ),
      ),
    );
  }
}

更多关于Flutter插件hailify的介绍及使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件hailify的介绍及使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,hailify 并不是一个广为人知或官方支持的插件。如果你在某个项目或文档中遇到了这个插件,可能是因为它是一个自定义的插件或者是一个内部使用的插件。以下是一些探索和使用未知插件(如 hailify)的步骤:

1. 查找文档或源代码

  • 查找文档: 首先,尝试查找插件的官方文档或说明。通常,插件的文档会提供如何使用它的详细信息。
  • 查看源代码: 如果插件是开源的,你可以查看其源代码。Flutter插件通常托管在GitHub或其他代码托管平台上。通过查看源代码,你可以了解插件的功能和使用方法。

2. pubspec.yaml 中添加依赖

如果你找到了插件的发布地址(例如在 pub.dev 上),你可以在 pubspec.yaml 文件中添加依赖项。例如:

dependencies:
  flutter:
    sdk: flutter
  haility: ^1.0.0  # 假设版本号为1.0.0

然后运行 flutter pub get 来获取插件。

3. 导入插件并使用

在Dart文件中导入插件并使用它。例如:

import 'package:hailify/hailify.dart';

void main() {
  // 使用插件的功能
  Hailify.doSomething();
}
回到顶部