Flutter功能扩展插件aiuta_flutter的使用

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

Flutter功能扩展插件aiuta_flutter的使用

Aiuta Virtual Try On SDK 是一个用于Flutter应用的虚拟试衣解决方案,特别适合服装和时尚业务。本文将详细介绍如何在Flutter项目中集成和使用该插件。

权限配置

iOS

在iOS项目的Info.plist文件中添加以下权限:

<key>NSCameraUsageDescription</key>
<string>我们需要访问您的相机以便为您提供虚拟试衣体验。</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>我们需要保存生成的图像到您的相册。</string>

Android

无需特殊配置,插件应可直接使用。

可用性

iOS

支持iOS 12.0及以上版本编译,但SDK需要iOS 13.0或更高版本才能正常工作。请在提供虚拟试衣功能前检查SDK的可用性:

if (await aiuta.isAvailable) {
  // 提供虚拟试衣功能
}

Android

需要minSdkVersion = 23或更高。

配置

参考配置文档了解详细配置选项。

虚拟试衣功能

调用startTryonFlow方法以提供虚拟试衣功能:

_aiuta.startTryonFlow(
  product: AiutaProduct(
    skuId: Env.SKU_ID,
    catalogName: Env.SKU_CATALOG_NAME,
    title: "YOUR title",
    imageUrls: [
      "YOUR image 1",
      "YOUR image 2",
    ],
    brand: "YOUR brand",
    inWishlist: true,
  ),
);

产品信息

AiutaProduct表示在Aiuta平台上的SKU信息。

试穿历史

调用startHistoryFlow方法以显示用户的试穿历史:

_aiuta.startHistoryFlow();

示例代码

以下是一个完整的示例代码,展示如何在Flutter应用中集成并使用aiuta_flutter插件:

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

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

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

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

class _MyAppState extends State<MyApp> {
  final _aiuta = Aiuta(
    configuration: AiutaConfiguration(
      mode: AiutaMode.fullScreen,
      authentication: ApiKeyAuthentication(
        subscriptionId: 'your_subscription_id',
        apiKey: 'your_api_key',
      ),
      toggles: AiutaToggles(
        isHistoryAvailable: true,
        isWishlistAvailable: true,
        isPreOnboardingAvailable: false,
        isShareAvailable: false,
        isBackgroundExecutionAllowed: true,
      ),
      language: StandardLanguage(
        language: DefaultAiutaLanguages.english,
        brand: "YOUR Brand",
        termsOfServiceUrl: "https://brand.com/tos",
        privacyPolicyUrl: "https://brand.com/pp",
        onboardingPageConsentSupplementaryPoints: [
          'Optional consent point',
        ],
      ),
      theme: AiutaTheme(
        colors: AiutaColors(
          primary: "#FF000000",
          secondary: "#FF9F9F9F",
          tertiary: "#FFEEEEEE",
        ),
      ),
    ),
  );

  bool _isAiutaAvailable = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    Aiuta.isAvailable.then((isAvailable) {
      setState(() {
        _isAiutaAvailable = isAvailable;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Aiuta SDK example app'),
        ),
        body: Center(
          child: _isAiutaAvailable
              ? Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    TextButton(
                      onPressed: () {
                        _aiuta.startTryonFlow(
                          product: AiutaProduct(
                            skuId: 'your_sku_id',
                            catalogName: 'your_catalog_name',
                            title: "YOUR title",
                            imageUrls: [
                              "YOUR image 1",
                              "YOUR image 2",
                            ],
                            brand: "YOUR brand",
                            inWishlist: true,
                          ),
                        );
                      },
                      child: const Text('Start Aiuta'),
                    ),
                    TextButton(
                      onPressed: () {
                        _aiuta.startHistoryFlow();
                      },
                      child: const Text('Show history'),
                    ),
                  ],
                )
              : const Text('Aiuta is not available'),
        ),
      ),
    );
  }
}

更多关于Flutter功能扩展插件aiuta_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter功能扩展插件aiuta_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,aiuta_flutter 是一个用于 Flutter 的功能扩展插件,它可能提供了各种工具和功能来增强 Flutter 应用的能力。由于 aiuta_flutter 是一个具体的插件,这里无法提供其官方的完整代码或文档(因为这会随着插件的版本更新而变化),但我可以展示一个如何使用类似插件的通用代码示例,并假设 aiuta_flutter 提供了类似的功能。

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

dependencies:
  flutter:
    sdk: flutter
  aiuta_flutter: ^最新版本号  # 替换为实际的最新版本号

然后运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中导入并使用这个插件。假设 aiuta_flutter 提供了一些工具函数,比如日志记录、设备信息获取等,你可以这样使用:

import 'package:flutter/material.dart';
import 'package:aiuta_flutter/aiuta_flutter.dart';  // 假设这是插件的导入路径

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String deviceInfo = '';
  String logMessage = '';

  @override
  void initState() {
    super.initState();
    // 假设 aiuta_flutter 提供了获取设备信息的方法
    _getDeviceInfo();
    // 假设 aiuta_flutter 提供了日志记录的方法
    _log("App started");
  }

  void _getDeviceInfo() async {
    // 假设 getDeviceInfo 是一个异步方法,返回设备信息
    String info = await AiutaFlutter.getDeviceInfo();  // 替换为实际的方法调用
    setState(() {
      deviceInfo = info;
    });
  }

  void _log(String message) {
    // 假设 log 是一个同步方法,用于记录日志
    AiutaFlutter.log(message);  // 替换为实际的方法调用
    setState(() {
      logMessage = message;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Device Info:'),
            Text(deviceInfo),
            SizedBox(height: 20),
            Text('Log Message:'),
            Text(logMessage),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 触发另一个日志记录
          _log("Button pressed");
        },
        tooltip: 'Log Event',
        child: Icon(Icons.add),
      ),
    );
  }
}

注意

  1. 上述代码中的 AiutaFlutter.getDeviceInfo()AiutaFlutter.log(message) 是假设的方法调用,你需要根据 aiuta_flutter 插件的实际 API 文档进行替换。
  2. 插件的具体功能和 API 可能会随着版本更新而变化,因此请参考插件的官方文档和示例代码。
  3. 如果 aiuta_flutter 插件提供了更多的功能(如网络请求、文件操作等),你需要相应地调整代码来使用这些功能。

希望这个示例能帮助你开始使用 aiuta_flutter 插件。如果你有更具体的需求或问题,请查阅插件的官方文档或在其 GitHub 仓库中查找相关信息。

回到顶部