Note: This plugin is still under development and for now, only Android is supported. Feedback and Pull Requests welcome!
Add flutter_whatsapp_stickers as a dependency in your pubspec.yaml file.
Check out the example directory for a sample app.
Add the following option to your app\build.gradle
file. This will prevent all WebP files from being compressed.
android {
aaptOptions {
noCompress "webp"
}
}
You need to include your assets in your pubspec.yaml file.
flutter:
assets:
- sticker_packs/sticker_packs.json
- sticker_packs/1/
If you are using assets that are not bundled in your build, then you need to add the following to your Manifest file. Note that you cannot use both.
<meta-data android:name="NonAssetContentProvider" android:value="true" />
To change the stickers packs file, add this Build Config Field to your app\build.gradle
file. The default is sticker_packs.json
.
buildConfigField("String", "STICKER_PACK_FILE", "\"sticker_packs.json\"")
Currently, there is no iOS support. Pull requests for this are more than welcome for this.
Check if WhatsApp is installed.
bool whatsAppInstalled = await WhatsAppStickers.isWhatsAppInstalled;
Check if the WhatsApp Consumer package is installed
bool whatsAppConsumerAppInstalled = await WhatsAppStickers.isWhatsAppConsumerAppInstalled;
Check if the WhatsApp Business package app is installed
bool whatsAppSmbAppInstalled = await WhatsAppStickers.isWhatsAppSmbAppInstalled;
Check if a sticker pack is installed.
_stickerPackInstalled = await WhatsAppStickers().isStickerPackInstalled(_stickerPackIdentifier);
Add a sticker pack to WhatsApp.
WhatsAppStickers().addStickerPack(
packageName: WhatsAppPackage.Consumer,
stickerPackIdentifier: _stickerPackIdentifier,
stickerPackName: _stickerPackName,
listener: _listener,
);
Updated Sticker Pack contents and notify listeners
WhatsAppStickers().updatedStickerPacks(_stickerPackIdentifier);
The Add Sticker Pack Listener
Future<void> _listener(StickerPackResult action, bool result, {String error}) async {
// Do what you must here
}
Here is an example of how to create a custom stickers_packs.json
file.
void createLocalFile() async {
String dir = (await getApplicationDocumentsDirectory()).path;
Directory stickersDirectory = Directory("$dir/sticker_packs");
if (!await stickersDirectory.exists()) {
await stickersDirectory.create();
}
File jsonFile = File('$dir/sticker_packs/sticker_packs.json');
String content = jsonEncode(stickerPacks);
jsonFile.writeAsStringSync(content);
}