Flutter WhatsApp贴纸导出插件whatsapp_stickers_exporter的使用

Flutter WhatsApp贴纸导出插件whatsapp_stickers_exporter的使用

whatsapp_stickers_exporter 是一个用于将贴纸导出到 WhatsApp 的 Flutter 插件。该插件支持 iOS 和 Android,并且支持静态和动画贴纸。

示例

可以查看一个使用此插件的 Android/iOS 应用:msb_app,这是 moe-sticker-bot 项目的一部分。

安装来自资产的贴纸

首先,将你的图像添加到 Flutter 资产中。

flutter:
   assets:
     - images/01_Cuppy_smile.webp
     - images/02_Cuppy_lol.webp
     - images/03_Cuppy_rofl.webp
     - images/tray_Cuppy.png

接下来,编写 Dart 代码以导出这些贴纸:

// 这个有些混乱的列表数据类型是为了确保导出到平台的贴纸能够保留它们的顺序。
// ['sticker path', 'emoji', 'emoji(optional)', 'emoji(optional)', 'emoji(optional)']
const stickerAssets = [
    ['images/01_Cuppy_smile.webp', '☕', '🙂'],
    ['images/02_Cuppy_lol.webp', '😄', '😀'],
    ['images/03_Cuppy_rofl.webp', '😄', '😀'],
];

List<List<String>> stickerSet = [];

for (var s in stickerAssets) {
    var stickerObject = <String>[];
    // 将贴纸路径从资产中加载
    stickerObject.add(WhatsappStickerImage.fromAsset(s[0]).path);
    // 添加可选的 emoji
    stickerObject.addAll(s.sublist(1, s.length));
    stickerSet.add(stickerObject);
}

// 加载托盘图像
var trayImage = WhatsappStickerImage.fromAsset("images/tray_Cuppy.png").path;

var exporter = WhatsappStickersExporter();
try {
    // 添加贴纸包
    await exporter.addStickerPack(
        "my_identifier", // 标识符
        "my_name", // 名称
        "my_author", // 出版商
        trayImage, // 托盘图像
        "", // 出版商网站
        "", // 隐私政策网站
        "", // 许可协议网站
        false, // 是否为动画贴纸包
        stickerSet);
} catch (e) {
    print(e.toString()); // 打印错误信息
}

安装来自远程文件的贴纸

首先,定义要下载的贴纸列表:

const animatedAssets = [
    ['01_SendingLove.webp', "💕", "😘", "❤️"],
    ["02_WellDoThisTogether.webp", "✊", "💪", "🙏"],
    ["03_Heart.webp", "❤️", "😘", "💕"]
];

然后,下载这些文件并创建目录:

var appDir = await getApplicationDocumentsDirectory();
var ssDir = Directory('${appDir.path}/stickers');
await ssDir.create(recursive: true);

final dio = Dio();
final downloads = <Future>[];

for (var a in animatedAssets) {
    // 下载每个贴纸文件
    downloads.add(
    dio.download(
        'https://github.com/WhatsApp/stickers/raw/main/iOS/WAStickersThirdParty/${a[0]}',
        '${ssDir.path}/${a[0]}',
    ),
    );
}
// 下载托盘图像
downloads.add(dio.download("https://github.com/WhatsApp/stickers/raw/main/iOS/WAStickersThirdParty/tray_TogetherAtHome.png",
    '${ssDir.path}/tray.png'));

await Future.wait(downloads); // 等待所有下载完成

List<List<String>> stickerSet = [];

for (var s in animatedAssets) {
    var stickerObject = <String>[];
    // 将贴纸路径从文件中加载
    stickerObject
        .add(WhatsappStickerImage.fromFile('${ssDir.path}/${s[0]}').path);
    stickerObject.addAll(s.sublist(1, s.length));
    stickerSet.add(stickerObject);
}

// 加载托盘图像
var trayImage = WhatsappStickerImage.fromFile('${ssDir.path}/tray.png').path;

var exporter = WhatsappStickersExporter();
try {
    // 添加贴纸包
    await exporter.addStickerPack(
        "my_identifier", // 标识符
        "My Title", // 名称
        "my publisher", // 出版商
        trayImage, // 托盘图像
        "", // 出版商网站
        "", // 隐私政策网站
        "", // 许可协议网站
        true, // 是否为动画贴纸包
        stickerSet);
} catch (e) {
    print(e.toString()); // 打印错误信息
}

注意事项

  1. 请参阅 WhatsApp 贴纸要求文档,了解有关贴纸限制的信息,例如图像大小和数量限制。

  2. 请注意,该插件不会进行任何图像格式转换或验证,因此您提供的图像必须符合 WhatsApp 的限制。

  3. 如果您正在为 iOS 构建应用,请确保在 Info.plist 中添加 whatsapp:// 方案:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>whatsapp</string>
    </array>
    

更多关于Flutter WhatsApp贴纸导出插件whatsapp_stickers_exporter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter WhatsApp贴纸导出插件whatsapp_stickers_exporter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用whatsapp_stickers_exporter插件来导出WhatsApp贴纸包的示例代码。这个插件可以帮助你将贴纸包导出为WhatsApp支持的格式。

首先,确保你已经在pubspec.yaml文件中添加了whatsapp_stickers_exporter依赖:

dependencies:
  flutter:
    sdk: flutter
  whatsapp_stickers_exporter: ^最新版本号  # 请替换为最新版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用whatsapp_stickers_exporter插件:

  1. 导入插件

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

import 'package:whatsapp_stickers_exporter/whatsapp_stickers_exporter.dart';
  1. 准备贴纸数据

你需要准备贴纸的图像资源以及相关的元数据。这里假设你有一个贴纸列表,每个贴纸都有一个图像路径和表情符号。

List<Sticker> stickers = [
  Sticker(
    imagePath: 'assets/stickers/sticker1.png',
    emojis: ['😊'],
  ),
  Sticker(
    imagePath: 'assets/stickers/sticker2.png',
    emojis: ['😍'],
  ),
  // 添加更多贴纸...
];
  1. 配置贴纸包信息

你需要提供贴纸包的基本信息,如名称、作者、图标等。

StickerPack stickerPack = StickerPack(
  name: 'MyStickers',
  publisher: 'Your Name',
  trayImagePath: 'assets/tray_image.png',  // 贴纸包的托盘图像
  publisherEmail: 'your_email@example.com',
  publisherWebsite: 'https://www.example.com',
  privacyPolicyWebsite: 'https://www.example.com/privacy',
  licenseAgreementWebsite: 'https://www.example.com/license',
  stickers: stickers,
);
  1. 导出贴纸包

使用WhatsAppStickersExporter类来导出贴纸包。

void exportStickerPack() async {
  try {
    final exporter = WhatsAppStickersExporter();
    await exporter.exportStickerPack(
      stickerPack: stickerPack,
      outputDirectory: (await getApplicationDocumentsDirectory()).path,
    );
    print('Sticker pack exported successfully!');
  } catch (e) {
    print('Failed to export sticker pack: $e');
  }
}
  1. 调用导出函数

你可以在应用的某个地方调用exportStickerPack函数,比如在按钮点击事件中。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sticker Exporter Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: exportStickerPack,
            child: Text('Export Sticker Pack'),
          ),
        ),
      ),
    );
  }
}

确保你的assets文件夹中包含所有贴纸图像和托盘图像,并在pubspec.yaml中正确声明它们:

flutter:
  assets:
    - assets/stickers/sticker1.png
    - assets/stickers/sticker2.png
    - assets/tray_image.png

以上代码展示了如何使用whatsapp_stickers_exporter插件来导出WhatsApp贴纸包。你可以根据实际需求调整贴纸数据和配置信息。

回到顶部