nim_chatkit_sticker

nim_chatkit_sticker is an optional Sticker extension for nim_chatkit_ui. It keeps the default Sticker resources out of the base chat UIKit and sends every Sticker through the existing image-message flow.

Default Integration

Add the package beside nim_chatkit_ui, then initialize it after ChatKitClient:

ChatKitClient.init();
StickerKitClient.init();

Add StickerKitClient.delegate to the host App's localizationsDelegates. The package includes ajmd, lt, and xxy by default.

Disable Sticker

StickerKitClient.init(
  config: const StickerConfig(enabled: false),
);

The configuration is read during initialization. Disabling the extension does not affect image messages already sent or received.

Replace With App Assets

Declare the assets in the customer App's pubspec.yaml. Keep packageName null so Flutter loads them from the App bundle:

final customPack = StickerPack(
  id: 'customer',
  tabIcon: const StickerAssetSource(
    assetPath: 'assets/stickers/customer_normal.png',
  ),
  selectedTabIcon: const StickerAssetSource(
    assetPath: 'assets/stickers/customer_selected.png',
  ),
  stickers: const <StickerItem>[
    StickerItem(
      id: 'customer_001',
      image: StickerAssetSource(
        assetPath: 'assets/stickers/customer_001.png',
      ),
    ),
  ],
);

StickerKitClient.init(
  config: StickerConfig(packs: <StickerPack>[customPack]),
);

Use Another Resource Package

Set packageName on each StickerAssetSource to the package that declares the asset. This works with a published nim_chatkit_sticker dependency and does not require modifying its source.

const source = StickerAssetSource(
  assetPath: 'assets/stickers/company_001.png',
  packageName: 'company_sticker_assets',
);

To append instead of replace, combine the defaults with the custom pack:

StickerKitClient.init(
  config: StickerConfig(
    packs: <StickerPack>[
      ...StickerDefaults.packs,
      customPack,
    ],
  ),
);