Flutter物流运输插件uni_shipping的使用

Flutter物流运输插件uni_shipping的使用

概述

UniShipping 是一个专门为您的电子商务应用程序或其他需要与物流公司协调的产品分发系统集成物流功能的 Flutter 包。它简化了与物流 API 的交互,使管理订单和发货变得简单。

功能

  • 使用您的客户端凭据初始化包。
  • 创建要发送给客户的订单。
  • 获取单个订单的详细信息。
  • 启动订单的发货流程。

目前,UniShipping 专门与TOTROD物流公司合作,提供了一种直接从您的应用程序处理物流的方式。

开始使用

要在您的 Flutter 项目中使用 UniShipping,请遵循以下步骤:

安装

  1. 将 UniShipping 添加到您的 pubspec.yaml 文件中:
dependencies:
  uni_shipping: latest_version
  1. 运行 flutter pub get 来安装该包。

使用

在您的 Dart 文件中导入 UniShipping:

import 'package:uni_shipping/uni_shipping.dart';

使用您的客户端凭据和环境设置初始化 UniShipping:

void main() {
  UniShippingConfigs.init(
    clientId: 'YourClientId',
    clientSecret: 'YourClientSecret',
    environment: UniShippingEnvironment.staging,
  );

  runApp(const MyApp());
}

创建订单

CreateOrderDTO createOrderBody = CreateOrderDTO(
  // 您的订单详情
);
CreateOrderRes createOrderRes = await UniShippingOrders.createOrder(createOrderBody);

获取单个订单

OrderModel singleOrder = await UniShippingOrders.getSingleOrder('YourOrderID');

创建发货流程

CreateshipmentDTO createShipProcessBody = CreateshipmentDTO(
  // 您的发货详情
);
ChipOrderResponse createShipProcessRes = await UniShippingShippment.createShipProcess(createShipProcessBody);

示例

示例应用演示了如何使用 UniShipping。您可以查看 example 目录以获取更多细节。

贡献

欢迎贡献!如果您希望贡献,请将仓库分叉并提交拉取请求。

许可证

UniShipping 在 MIT 许可证下可用。详情请参阅 LICENSE 文件。


以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'package:uni_shipping/uni_shipping.dart';

const String clientId = 'your_client_id_here';
const String clientSecret = 'your_client_secret_here';

void main() {
  UniShippingConfigs.init(
    clientId: clientId,
    clientSecret: clientSecret,
    environment: UniShippingEnvironment.staging,
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'UniShipping 示例',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('UniShipping 示例'),
        ),
        body: Center(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              const Text(
                '欢迎来到 UniShipping 示例',
                style: TextStyle(fontSize: 20),
              ),
              const SizedBox(height: 20),

              //* 创建订单 -------------------------------------
              ElevatedButton(
                onPressed: () async {
                  CreateOrderDTO createOrderBody = CreateOrderDTO(
                    name: '客户端名称',
                    phone: '客户端电话',
                    itemDescription: '商品描述',
                    orderTotal: '订单总额',
                    // 重量(公斤)
                    weight: 10,
                    noOfBox: 1,
                    addressDTO: AddressDTO(
                      // 客户地址
                      latitude: 24.8413865,
                      longitude: 46.7332576,
                    ),
                  );
                  try {
                    CreateOrderRes createOrderRes = await UniShippingOrders.createOrder(createOrderBody);
                    debugPrint('成功: ${createOrderRes.data?.toJson()}');
                  } catch (e) {
                    debugPrint(e.toString());
                  }
                },
                child: const Text('创建订单'),
              ),
              const SizedBox(height: 20),

              //* 获取单个订单 -------------------------------------
              ElevatedButton(
                onPressed: () async {
                  try {
                    OrderModel singleOrder = await UniShippingOrders.getSingleOrder('订单ID');
                    debugPrint('成功: ${singleOrder.toJson()}');
                  } catch (e) {
                    debugPrint(e.toString());
                  }
                },
                child: const Text('获取单个订单'),
              ),

              const SizedBox(height: 20),
              //* 创建发货流程 -------------------------------------
              ElevatedButton(
                onPressed: () async {
                  CreateshipmentDTO createShipProcessBody = CreateshipmentDTO(
                    orderId: '订单ID',
                    warehouse: '仓库ID',
                    courierPartnerId: '快递合作伙伴ID',
                  );
                  try {
                    ChipOrderResponse createShipProcessRes = await UniShippingShippment.createShipProcess(createShipProcessBody);
                    debugPrint('成功: ${createShipProcessRes.data?.toJson()}');
                  } catch (e) {
                    debugPrint(e.toString());
                  }
                },
                child: const Text('创建发货流程'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter物流运输插件uni_shipping的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter物流运输插件uni_shipping的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用uni_shipping插件进行物流运输操作的相关代码示例。uni_shipping插件(假设它存在,因为这不是一个广为人知的Flutter官方插件)通常用于集成物流跟踪和运输功能。以下示例将展示如何初始化插件、获取物流信息和显示物流跟踪详情。

1. 添加依赖

首先,在pubspec.yaml文件中添加uni_shipping依赖:

dependencies:
  flutter:
    sdk: flutter
  uni_shipping: ^x.y.z  # 替换为实际的版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入uni_shipping插件:

import 'package:uni_shipping/uni_shipping.dart';

3. 初始化插件

在应用的适当位置(如main.dart或某个服务类中)初始化uni_shipping插件:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  UniShipping.instance.initialize(); // 假设插件有一个initialize方法
  runApp(MyApp());
}

4. 获取物流信息

假设uni_shipping插件提供了一个fetchShippingInfo方法来获取物流信息,你可以这样使用它:

class ShippingInfoScreen extends StatefulWidget {
  @override
  _ShippingInfoScreenState createState() => _ShippingInfoScreenState();
}

class _ShippingInfoScreenState extends State<ShippingInfoScreen> {
  String? trackingNumber;
  List<ShippingEvent>? shippingEvents;
  String? errorMessage;

  void fetchShippingInfo() async {
    setState(() {
      shippingEvents = null;
      errorMessage = null;
    });

    try {
      var info = await UniShipping.instance.fetchShippingInfo(trackingNumber!);
      setState(() {
        shippingEvents = info.events;
      });
    } catch (e) {
      setState(() {
        errorMessage = e.toString();
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Shipping Info'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              decoration: InputDecoration(labelText: 'Tracking Number'),
              onChanged: (value) {
                trackingNumber = value;
              },
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: fetchShippingInfo,
              child: Text('Fetch Info'),
            ),
            SizedBox(height: 16),
            if (errorMessage != null)
              Text(
                'Error: $errorMessage',
                style: TextStyle(color: Colors.red),
              ),
            if (shippingEvents != null)
              Expanded(
                child: ListView.builder(
                  itemCount: shippingEvents!.length,
                  itemBuilder: (context, index) {
                    var event = shippingEvents![index];
                    return ListTile(
                      title: Text('${event.location} - ${event.date}'),
                      subtitle: Text(event.description),
                    );
                  },
                ),
              ),
          ],
        ),
      ),
    );
  }
}

5. 假设的ShippingEvent类

为了完整性,这里假设ShippingEvent类可能的结构:

class ShippingEvent {
  String location;
  String date;
  String description;

  ShippingEvent({required this.location, required this.date, required this.description});
}

注意

  • 上面的代码示例是基于假设的uni_shipping插件API。实际使用时,你需要参考该插件的官方文档或源代码来了解其确切的API和方法。
  • UniShipping.instance.initialize()UniShipping.instance.fetchShippingInfo(trackingNumber)等方法是假设存在的,实际使用时需要替换为插件提供的真实方法。
  • 错误处理和UI布局可能需要根据实际需求进行调整。

希望这能帮助你在Flutter项目中集成和使用uni_shipping插件。如果有更多具体需求或问题,请随时提出!

回到顶部