Flutter Shopify店铺前端接口插件shopify_storefront的使用

发布于 1周前 作者 itying888 来自 Flutter

一个用于Shopify Storefront GraphQL查询的包。

功能 #

只需两行代码即可进行Shopify GraphQL查询。您可以查询的列表可以在以下链接中查看: https://shopify.dev/custom-storefronts/tools/graphiql-storefront-api。 此包仅针对Storefront API进行了测试。使用此包可以非常简单地从Shopify网站创建一个Flutter应用。异常处理已经包含在内。

开始使用 #

您需要有一个Shopify网站才能开始使用此包。只有当您需要基于Shopify网站的Flutter应用时,才需要使用此包。此包仅与用于获取产品详情、客户详情等信息的Storefront API一起测试过。完整的可用项目列表可以在以下链接中查看: https://shopify.dev/custom-storefronts/tools/graphiql-storefront-api。 最新版本的Storefront API也可以从此链接中获取。我们默认使用的版本是2023-01。您可以通过代码更改它。您需要从Shopify仪表板创建一个自定义应用以获取访问令牌。

用法 #

只需添加访问令牌、应用名称和查询语句即可。

String query = "query {shop { name } }";
...
...
return FutureBuilder(
      future: ShopifyStoreFront(
              'xgg85i66544852o7894byy6ii8546p9', 'esefire-wel')
          .fetchDataFromShopify(query),
      builder: (context, snapshot) => Text(snapshot.data ?? ''),
    );

附加信息 #

欢迎所有贡献。

示例代码:

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

String query = “query {shop { name } }”;

class Test extends StatefulWidget { const Test({super.key});

@override State<Test> createState() => _TestState(); }

class _TestState extends State<Test> { void handleError(error) { /* String errorMessage = error.message ?? ‘’; if (error is BadRequestException) { showToast(desc: errorMessage); } else if (error is FetchDataException) { showErrorDialog(desc: errorMessage); } else if (error is ApiNotRespondingException) { showErrorDialog( desc: ‘It takes long to respond’, ); } */ }

@override Widget build(BuildContext context) { return FutureBuilder( future: ShopifyStoreFront(‘xgg85i66544852o7894byy6ii8546p9’, ‘esefire-wel’) .fetchDataFromShopify(query, handleError), builder: (context, snapshot) => Text(snapshot.data ?? ‘’), ); } }


更多关于Flutter Shopify店铺前端接口插件shopify_storefront的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Shopify店铺前端接口插件shopify_storefront的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用shopify_storefront插件来与Shopify店铺前端接口进行交互的代码示例。这个示例将展示如何初始化Shopify客户端、获取店铺产品信息以及列出这些产品。

首先,确保你的Flutter项目中已经添加了shopify_storefront依赖。你可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  shopify_storefront: ^x.y.z  # 替换为最新版本号

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

接下来,我们创建一个Flutter应用,并在其中使用shopify_storefront插件。

1. 初始化Shopify客户端

首先,你需要创建一个GraphQLClient实例,用于与Shopify的Storefront API进行通信。

import 'package:flutter/material.dart';
import 'package:shopify_storefront/graphql/queries.dart';
import 'package:shopify_storefront/graphql/mutations.dart';
import 'package:shopify_storefront/shopify_storefront.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Shopify Storefront Demo',
      home: ShopifyDemo(),
    );
  }
}

class ShopifyDemo extends StatefulWidget {
  @override
  _ShopifyDemoState createState() => _ShopifyDemoState();
}

class _ShopifyDemoState extends State<ShopifyDemo> {
  final String storefrontAccessToken = 'YOUR_STOREFRONT_ACCESS_TOKEN'; // 替换为你的Storefront Access Token
  final String domain = 'YOUR_SHOP_NAME.myshopify.com'; // 替换为你的Shopify店铺域名

  GraphQLClient? _client;

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

  void _initializeClient() async {
    final storefront = Storefront.create(
      domain: domain,
      storefrontAccessToken: storefrontAccessToken,
    );

    setState(() {
      _client = GraphQLClient(storefront: storefront);
    });
  }

  @override
  Widget build(BuildContext context) {
    if (_client == null) {
      return Center(child: CircularProgressIndicator());
    }

    return Scaffold(
      appBar: AppBar(
        title: Text('Shopify Storefront Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            await _fetchProducts();
          },
          child: Text('Fetch Products'),
        ),
      ),
    );
  }

  Future<void> _fetchProducts() async {
    final QueryResult result = await _client!.queryGraphQL(
      Query(
        shop: ShopQueryBuilder()
          .products(first: 10, reverse: true)
          .buildQuery(),
      ),
    );

    if (result.hasErrors) {
      print('Error fetching products: ${result.errors!.map((e) => e.message).join(', ')}');
    } else {
      final List<ProductEdge> productEdges = result.data!.shop!.products!.edges!;
      print('Fetched ${productEdges.length} products');
      for (var edge in productEdges) {
        print('Product: ${edge.node!.title}, ID: ${edge.node!.id}');
      }
    }
  }
}

2. 解释代码

  • 依赖导入:我们导入了fluttershopify_storefront包。
  • 主函数main函数启动了我们的Flutter应用。
  • ShopifyDemo Widget:这是我们的主Widget,它包含一个用于初始化Shopify客户端的initState方法。
  • 初始化客户端:在_initializeClient方法中,我们创建了StorefrontGraphQLClient实例。你需要提供你的storefrontAccessToken和Shopify店铺域名。
  • 构建UI:在build方法中,我们显示了一个加载指示器,直到客户端初始化完成。之后,我们显示一个按钮,点击该按钮将调用_fetchProducts方法。
  • 获取产品_fetchProducts方法使用queryGraphQL方法执行GraphQL查询来获取前10个产品。我们检查查询是否有错误,并打印出获取到的产品信息。

请确保你已经从Shopify后台获取了storefrontAccessToken,并替换了代码中的占位符。

这个示例展示了如何使用shopify_storefront插件与Shopify的Storefront API进行基本的交互。你可以根据需要扩展这个示例,以实现更多功能,如添加产品到购物车、处理用户登录等。

回到顶部