Flutter设计资源整合插件designhubz的使用

Flutter设计资源整合插件designhubz的使用

在设计hubz中,我们通过全球领先的AR技术帮助品牌以沉浸式的方式与消费者建立联系。

我们正在通过下一代电子商务界面来改变在线购物体验,该技术已被一些全球最大的品牌和零售商采用。

Designhubz | 眼镜虚拟试戴 Flutter 插件

本插件可将Designhubz眼镜虚拟试戴AR功能集成到您的Flutter应用中。

Android iOS
支持 SDK 21+ iOS 10+

使用

要使用此插件,请在您的pubspec.yaml文件中添加designhubz作为依赖项。

入门指南

Android

  1. android/app/build.gradle中将minSdkVersion设置为21,并将compileSdkVersion设置为至少34:
android {
    compileSdkVersion 34

    ...

    defaultConfig {
        minSdkVersion 21
    }
}

iOS

无需进行额外步骤。

Flutter

您必须在Android和iOS上授予相机权限。您可以选择任何适合您的包来完成此操作。例如,在使用任何试戴小部件之前,可以使用permission_handler

您可以在您的小部件树中添加EyewearTryOnWidget用于眼镜试戴,添加CCLTryOnWidget用于隐形眼镜试戴。

该小部件可以通过传递给小部件的onTryOnReady回调的相应TryOnController进行控制。

请参阅示例以获取完整的示例应用。检查example/lib/eyewear_tryon_demo_page.dart以获取眼镜小部件的详细用法,以及example/lib/ccl_tryon_demo_page.dart以获取隐形眼镜小部件的用法。

片段

  1. 添加EyewearTryOnWidget
import 'package:designhubz/designhubz.dart';
import 'package:flutter/material.dart';

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

  @override
  State<DesignHubzDemo> createState() => _DesignHubzDemoState();
}

class _DesignHubzDemoState extends State<DesignHubzDemo> {
  late TryOnController _tryOnController;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: EyewearTryOnWidget(
        organizationId: "your_organization_id",
        onTryOnReady: (controller) {
          _tryOnController = controller;
        },
      ),
    );
  }
}
  1. 一旦从onTryOnReady回调接收到EyewearTryOnController,您就可以在其上调用各种方法。

相同的操作也可以对CCLTryOnWidget及其控制器CCLTryOnController进行。

TryOnControllers通用方法

许多方法在EyewearTryOnControllerCCLTryOnController中都是通用的。首先讨论这些通用的方法。

所有方法都可能抛出TryOnError,如果由于网络或其他错误导致TryOn小部件与应用程序之间的通信失败,则会抛出此异常。更多关于抛出错误的详细信息在TryOnErrormessage参数中。

setUserId()

您需要在加载任何产品之前调用setUserId函数。

请求
参数名 类型 描述
userId string 必填。您的用户ID
示例
_tryOnController.setUserId('user_id');
响应

此函数没有返回值。

loadProduct()

它将加载提供的productId关联的产品。您可以传递一个可选的progressHandler回调以获取产品的加载进度。

请求
参数名 类型 描述
productId string 必填。产品ID
progressHandler ProductLoadingProgressCallback 可选。接收产品加载进度的回调
响应

如果成功,它将返回VTOProduct

VTOProduct {
  String productKey;
  List<String> variations;
}

如果productId无效或无法找到产品,它可能会抛出TryOnError

takeSnapshot()

它将捕获TryOn小部件内显示内容的快照图像。

请求

此函数没有必需的参数。

响应

它将以Uint8List形式返回图像数据,该数据可以用于Image小部件以显示图像。

FutureBuilder(
  future: _tryOnController.takeSnapshot(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      if (snapshot.hasError) {
        return Text("Error:${snapshot.error}");
      }
      final image = snapshot.data;
      if (image == null) {
        return const Text("No image captured");
      }
      return Image.memory(image);
    } else {
      return const Text(
        "Loading...",
        textAlign: TextAlign.center,
      );
    }
  },
);

EyewearTryOnController特定方法

这些方法仅在EyewearTryOnController中可用。

switchMode()

它将在3d模式和tryon模式之间切换。

请求

此函数没有必需的参数。

响应

此函数没有返回值。

fetchRecommendations()

它将获取一定数量的推荐。

请求
参数名 类型 描述
count number 必填。推荐数量
响应

如果成功,它将返回ScoredRecommendation列表,其中包括产品数据(包括变体)。

class ScoredRecommendation {
  final String productKey;
  final num score;
}

示例响应:

[
  ScoredRecommendation(
    productKey: "000209-0107",
    score: 10,
  ),
  ScoredRecommendation(
    productKey: "000838-0118",
    score: 10,
  ),
  ScoredRecommendation(
    productKey: "000241-2906",
    score: 10,
  ),
];

事件处理程序

EyewearTryOnWidgetCCLTryOnWidget都提供了以下事件处理回调:

onUpdateTryonStatus

当小部件的状态发生变化时将被调用。

参数
参数名 类型 描述
status TryOnStatus 小部件状态(idleloadingread

onError

当发生错误时将被调用。

参数
参数名 类型 描述
error string 交互时的错误信息

onTryOnRecovering

TryOn小部件在内存压力下崩溃后可以自动恢复。这在低端Android设备上很少发生。

恢复过程会重新加载用户、已加载的产品和正在使用的模式。当TryOn小部件恢复时,您可以检查isInRecoveryProcess标志以显示加载指示器。

参数
参数名 类型 描述
isInRecoveryProcess bool 指示TryOn是否在恢复过程中

EyewearTryOnWidget特定事件处理程序

这些事件处理程序仅在EyewearTryOnWidget中可用。

onUpdateTrackingStatus

当面部跟踪状态发生变化时将被调用。

参数
参数名 类型 描述
trackingStatus TryOnTrackingStatus 跟踪状态

trackingStatus将是以下值之一:

  • idle
  • cameraNotFound
  • faceNotFound
  • analyzing
  • tracking

onUpdateUserInfo

当用户信息更新时将被调用。

参数
参数名 类型 描述
userInfo TryOnUserInfo 详细的用户信息

TryOnUserInfo类型如下所示:

class TryOnUserInfo {
  /// 可以为以下之一:"Small","Medium","Large"
  String size;

  /// 眼睛之间的距离
  num eyeSize;

  /// 瞳孔间距
  num ipd;
}

更多关于Flutter设计资源整合插件designhubz的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设计资源整合插件designhubz的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


designhubz 是一个用于 Flutter 的设计资源整合插件,旨在帮助开发者更高效地管理和使用设计资源,如颜色、字体、图标、间距等。通过 designhubz,开发者可以轻松地将设计系统与 Flutter 应用集成,确保 UI 的一致性和可维护性。

以下是如何使用 designhubz 插件的简要指南:

1. 安装 designhubz 插件

首先,你需要在 pubspec.yaml 文件中添加 designhubz 依赖:

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

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

2. 初始化 designhubz

在你的 Flutter 应用中,初始化 designhubz 插件。通常,你可以在 main.dart 文件中进行初始化:

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

void main() {
  Designhubz.initialize(
    theme: DesignhubzTheme(
      colors: DesignhubzColors(
        primary: Colors.blue,
        secondary: Colors.green,
        // 其他颜色
      ),
      typography: DesignhubzTypography(
        headline1: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
        bodyText1: TextStyle(fontSize: 16),
        // 其他文本样式
      ),
      spacing: DesignhubzSpacing(
        small: 8.0,
        medium: 16.0,
        large: 24.0,
        // 其他间距
      ),
      // 其他设计资源
    ),
  );

  runApp(MyApp());
}

3. 使用 designhubz 资源

在应用的任何地方,你都可以通过 Designhubz 类访问设计资源。例如,使用颜色、字体和间距:

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Designhubz Example'),
        backgroundColor: Designhubz.colors.primary,
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Hello, Designhubz!',
              style: Designhubz.typography.headline1,
            ),
            SizedBox(height: Designhubz.spacing.medium),
            Text(
              'This is a sample text using Designhubz typography.',
              style: Designhubz.typography.bodyText1,
            ),
          ],
        ),
      ),
    );
  }
}

4. 自定义和扩展

designhubz 允许你根据需要自定义和扩展设计资源。你可以通过修改 DesignhubzTheme 中的属性来调整颜色、字体、间距等。此外,你还可以添加自定义的设计资源来满足特定的项目需求。

5. 动态切换主题

designhubz 支持动态切换主题。你可以通过调用 Designhubz.updateTheme 方法来更新应用的主题:

Designhubz.updateTheme(
  DesignhubzTheme(
    colors: DesignhubzColors(
      primary: Colors.red,
      secondary: Colors.orange,
      // 其他颜色
    ),
    // 其他设计资源
  ),
);
回到顶部