emoji_weixin 0.3.1
emoji_weixin: ^0.3.1 copied to clipboard
WeChat-style emoji/sticker panel for Flutter with Klipy search, custom stickers, camera capture, and multi-language UI.
emoji_weixin #
WeChat-style Flutter emoji/sticker panel package.
Requirements: Dart 3.12+ / Flutter 3.44+. Uses standalone material_ui (package:material_ui/material_ui.dart) instead of package:flutter/material.dart. Host apps should do the same; wrap unmigrated third-party Material widgets with MaterialUiCompatibilityBridge.
Features:
- Klipy online search — download and save results as local favorites
- Built-in emoji — Unicode emoji + recently used, plus Douyin common stickers
- Custom stickers — gallery pick via
image_picker; static images openpro_image_editor, GIFs are added as-is - Capture & edit — iOS/Android only: system camera →
pro_image_editor - Multi-language UI —
EmojiWeixinConfig.locale(zh/en/vi/id/fil/ms/hi)
Demo #
Example app screen recording (Klipy search, send, right-click to favorite):
Platform support #
| Feature | iOS | Android | Web | macOS | Windows | Linux |
|---|---|---|---|---|---|---|
| Panel / recent / Douyin stickers | Yes | Yes | Yes | Yes | Yes | Yes |
| image_picker add/edit | Yes | Yes | Yes | Yes | Yes | Yes |
| Klipy search & save | Yes | Yes | Yes | Yes | Yes | Yes |
| Capture & edit | System camera | System camera | — | — | — | — |
Quick start #
dependencies:
emoji_weixin:
path: ../ # or your dependency source
import 'package:emoji_weixin/emoji_weixin.dart';
// Option 1: global config at startup
EmojiWeixinConfig.configure(
const EmojiWeixinConfig(
klipyApiKey: 'YOUR_KLIPY_API_KEY',
locale: EmojiWeixinLocale.en, // zh en vi id fil ms hi
),
);
EmojiWeixinPanel(
onStickerSelected: (sticker) {
// insert into chat, etc.
},
);
// Option 2: pass config per panel
EmojiWeixinPanel(
config: const EmojiWeixinConfig(klipyApiKey: 'YOUR_KLIPY_API_KEY'),
onStickerSelected: (sticker) {},
);
Run the example #
cd example
# Edit assets/config.json and set klipyApiKey
flutter pub get
flutter run # or -d chrome / macos / windows / linux
Douyin sticker assets (disclaimer) #
Built-in Douyin stickers are synced from:
Asset copyright belongs to Douyin / rights holders. For learning and exchange only — do not use commercially. Package code is MIT; Douyin media assets are not covered by MIT.
Assets live under assets/stickers/douyin/ (info.json + static/).
Klipy API key #
Pass the key through configuration (not --dart-define):
- Create a key at KLIPY Partner Panel (docs)
- Host app:
EmojiWeixinConfig.configure(...)or panelconfig: - Example app: edit
example/assets/config.json(seeconfig.example.json) - Show KLIPY attribution in your UI when using search (attribution)
{
"klipyApiKey": "YOUR_KEY"
}
If the key is missing or empty, the search tab is hidden; other features still work.
Android (example) #
Aligned with kinetic_player/example:
compileSdk/targetSdk: 37minSdk: 24- AGP: 9.3.1
- Kotlin: 2.4.10
- Gradle: 9.6.1
- Release signing:
example/android/key.properties+example/jks/emoji_weixin.jks(demo keystore; replace for production) - Release minify/shrink +
proguard-rules.pro
Platform permissions #
iOS #
NSCameraUsageDescription/NSPhotoLibraryUsageDescription
Android #
CAMERA/INTERNET/READ_MEDIA_IMAGES
macOS #
- App Sandbox +
network.client+files.user-selected.read-write
Main APIs #
| API | Description |
|---|---|
EmojiWeixinConfig |
App/panel configuration (Klipy key, locale) |
EmojiWeixinLocale |
UI language: China/USA/Vietnam/Indonesia/Philippines/Malaysia/India |
EmojiWeixinPanel |
WeChat-style bottom sticker panel |
StickerRepository |
Pack/favorites persistence (Hive) |
StickerImportService |
Gallery add/edit via image_picker |
CameraStickerService |
Capture + edit (mobile) |
KlipyClient / KlipyStickerService |
Search and download |
StickerRenderer |
PNG/GIF/Unicode rendering |
Docs #
- English (default): README.md, CHANGELOG.md
- Simplified Chinese: README.zh-CN.md, CHANGELOG.zh-CN.md
License #
MIT (does not include Douyin sticker asset copyright)