Flutter WooCommerce集成插件monahawk_woocommerce的使用

Flutter WooCommerce集成插件monahawk_woocommerce的使用

woocommerce

Woocommerce SDK for Flutter.


Getting Started

pubspec.yaml文件中添加包并导入。

import 'package:monahawk_woocommerce/woocommerce.dart';

为您的项目创建一个WooCommerce实例。

示例:

WooCommerce woocommerce = WooCommerce(
  baseUrl: yourBaseUrl,
  consumerKey: yourConsumerKey,
  consumerSecret: consumerSecret);

参数 [baseUrl] 是您站点的基础URL。例如:http://me.com, https://me.comhttp://my.me.com

参数 [consumerKey] 是由WooCommerce提供的消费者密钥,例如:ck_12abc34n56j

参数 [consumerSecret] 是由WooCommerce提供的消费者密钥,例如:cs_1uab8h3s3op

可选参数 [apiPath] 是从baseUrl到WooCommerce端点的直接URL。例如:"/wp-json/wc/v3/"。如果您更改了默认的WordPress WooCommerce路径,则此参数非常有用,否则默认值适用。

可选参数 [isDebug] 告诉库是否应打印调试日志。这在调试或开发时非常有用。

WooCommerce SDK的目标是使使用Flutter和WooCommerce构建出色的电子商务应用尽可能简单,希望它能改善您的工作流程。


Features

  • 用户认证。
  • 客户管理。
  • 购物车管理。
  • 订单管理。
  • 产品管理。
  • 分类。
  • 标签。
  • 变体。
  • 支持对返回列表的方法进行过滤。
  • 支持自定义端点。
  • 物流、物流方法、物流地点。
  • 支付。
  • 税收、税类。
  • 等等更多功能。

Notes

安装 Jwt Token 插件,以便能够登录。


Examples

将您的凭据放入示例应用程序以快速演示。

示例演示


Auth

// 登录 - 成功后返回访问令牌。

final token = woocommerce.authenticateViaJWT(username: username, password: password);

// 登录 - 登录用户并返回已登录用户的详细信息(WooUser对象)。

final customer = woocommerce.loginCustomer(username: username, password: password);

// 检查用户是否已登录。

bool isLoggedIn = await woocommerce.isCustomerLoggedIn();

// 获取已登录用户ID。
int id = await fetchLoggedInUserId();

// 注销用户。
await logUserOut();

// 创建一个新的WooCommerce客户并返回WooCustomer对象。
WooCustomer user = WooCustomer(username: username, password: password, email: email);
final result = woocommerce.createCustomer();

Products

说明: 查看SDK参考以获取过滤选项。
SDK参考

// 获取所有产品 - 返回产品对象列表,默认每页10个。

final myProducts = await woocommerce.getProducts();

// 获取所有特色产品 - 返回特色产品的列表,查看API参考以获取更多过滤选项。

final myFeaturedProducts = await woocommerce.getProducts(featured: true);

// 获取标记为类别ID '22'的所有产品。

final mySpecificProduct = await getProducts(category: '22');

Cart

// 添加到购物车! - 返回添加的购物车项对象(接受数量、产品ID和产品变体的ID列表)。

final myCart = await woocommerce.addToMyCart(quantity: 2, id: 17);

// 创建订单。 - 返回创建的订单对象(接受OrderPayload对象)。

OrderPayload orderPayload = OrderPayload(customerId: customerId, setPaid=true);
final order = await woocommerce.CreateOrder(orderPayload);

Custom Requests - 自定义请求

// 发送自定义认证请求到WooCommerce API。

final response = await woocommerce.put(endpoint, data);

final anotherResponse = await woocommerce.get(endpoint);

Updates

  • ✅ 添加文档。
  • ✅ 添加Token持久化。
  • ❌ 添加更多的搜索过滤能力。
  • ❌ 多个示例。

WooCommerce SDK Documentation Reference

WooCommerce SDK 文档


WooCommerce API Documentation Reference

WooCommerce API 文档


Issues and Feedback

如果您觉得这个插件有用,请点击⭐。
您可以随时创建GitHub问题。欢迎提交代码和文档的拉取请求。
您也可以发送邮件至:ray@flutterengineer.com。

有关如何开始使用Flutter的帮助,请查看
在线文档,它提供了教程、示例、移动开发指南和完整的API参考。


示例代码

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:monahawk_woocommerce/woocommerce.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // 这是你的应用的根组件。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'WooCommerce Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: "Woo Commerce Demo"),
    );
  }
}

String baseUrl = ""; // 填写您的BaseUrl
String consumerKey = ""; // 填写您的Consumer Key
String consumerSecret = ""; // 填写您的Consumer Secret

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, this.title}) : super(key: key);

  final String? title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<WooProduct> products = [];
  List<WooProduct> featuredProducts = [];
  WooCommerce wooCommerce = WooCommerce(
    baseUrl: baseUrl,
    consumerKey: consumerKey,
    consumerSecret: consumerSecret,
    isDebug: true,
  );

  getProducts() async {
    products = await wooCommerce.getProducts();
    setState(() {});
    print(products.toString());
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    // 您可以使用Feature Builder来替代。
    getProducts();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    var size = MediaQuery.of(context).size;
    final double itemHeight = (size.height - kToolbarHeight - 24) / 2;
    final double itemWidth = size.width / 2;
    return Scaffold(
      body: SafeArea(
        child: CustomScrollView(
          slivers: <Widget>[
            SliverToBoxAdapter(
              child: Container(
                margin: EdgeInsets.all(10),
                child: Text(
                  'My Awesome Shop',
                  style: Theme.of(context)
                      .textTheme
                      .headline5!
                      .apply(color: Colors.blueGrey),
                ),
              ),
            ),
            SliverGrid(
              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                crossAxisCount: 2,
                childAspectRatio: (itemWidth / itemHeight),
                mainAxisSpacing: 2,
                crossAxisSpacing: 1,
              ),
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  final product = products[index];
                  return Column(
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: <Widget>[
                      Container(
                        height: 230,
                        width: 200,
                        margin: EdgeInsets.all(10),
                        decoration: BoxDecoration(
                          image: DecorationImage(
                              image: NetworkImage(
                                product.images[0].src!,
                              ),
                              fit: BoxFit.cover),
                          color: Colors.pinkAccent,
                          borderRadius: BorderRadius.all(Radius.circular(10)),
                        ),
                        // child: Image.network(product.images[0].src, fit: BoxFit.cover,),
                      ),
                      Text(
                        product.name ?? 'Loading...',
                        style: Theme.of(context)
                            .textTheme
                            .headline6!
                            .apply(color: Colors.blueGrey),
                      ),
                      Text(
                        '\$' + (product.price ?? ''),
                        style: Theme.of(context).textTheme.subtitle2,
                      )
                    ],
                  );
                },
                childCount: products.length,
              ),
            )
          ],
        ),
      ),
    );
  }
}
1 回复

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


monahawk_woocommerce 是一个用于 Flutter 的 WooCommerce 插件,它允许你在 Flutter 应用中与 WooCommerce 商店进行交互。通过这个插件,你可以轻松地获取产品、订单、客户等信息,并执行各种 WooCommerce API 操作。

以下是如何在 Flutter 项目中使用 monahawk_woocommerce 插件的基本步骤:

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 monahawk_woocommerce 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  monahawk_woocommerce: ^1.0.0  # 请使用最新版本

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

2. 初始化 WooCommerce 客户端

在使用插件之前,你需要初始化 WooCommerce 客户端。通常,你需要在应用的 main.dart 文件中进行初始化。

import 'package:monahawk_woocommerce/monahawk_woocommerce.dart';

void main() {
  WooCommerce.init(
    baseUrl: 'https://your-woocommerce-store.com', // 你的 WooCommerce 商店的 URL
    consumerKey: 'ck_your_consumer_key', // 你的 WooCommerce 消费者密钥
    consumerSecret: 'cs_your_consumer_secret', // 你的 WooCommerce 消费者密钥
  );

  runApp(MyApp());
}

3. 获取产品列表

你可以使用 WooCommerce 实例来获取产品列表。以下是一个简单的示例:

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

class ProductListScreen extends StatefulWidget {
  @override
  _ProductListScreenState createState() => _ProductListScreenState();
}

class _ProductListScreenState extends State<ProductListScreen> {
  List<Product> products = [];

  @override
  void initState() {
    super.initState();
    fetchProducts();
  }

  Future<void> fetchProducts() async {
    try {
      final fetchedProducts = await WooCommerce.instance.getProducts();
      setState(() {
        products = fetchedProducts;
      });
    } catch (e) {
      print('Error fetching products: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Products'),
      ),
      body: ListView.builder(
        itemCount: products.length,
        itemBuilder: (context, index) {
          final product = products[index];
          return ListTile(
            title: Text(product.name),
            subtitle: Text(product.price),
          );
        },
      ),
    );
  }
}

4. 创建订单

你还可以使用 WooCommerce 实例来创建订单。以下是一个简单的示例:

import 'package:monahawk_woocommerce/monahawk_woocommerce.dart';

Future<void> createOrder() async {
  final order = Order(
    customerId: 1,
    paymentMethod: 'bacs',
    paymentMethodTitle: 'Direct Bank Transfer',
    status: 'pending',
    lineItems: [
      OrderLineItem(
        productId: 93,
        quantity: 2,
      ),
    ],
  );

  try {
    final createdOrder = await WooCommerce.instance.createOrder(order);
    print('Order created: ${createdOrder.id}');
  } catch (e) {
    print('Error creating order: $e');
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!