flutter_social_keyboard

Last updated:

0 purchases

flutter_social_keyboard Image
flutter_social_keyboard Images
Add to Cart

Description:

flutter social keyboard

flutter_social_keyboard #
Fully customizable Emoji picker, Gif picker and Sticker for your flutter social media and chat applications

Acknowledgment: Much thanks to Stefan Humm for emoji_picker_flutter.

Preview #
.

Support #
If the package was useful or saved your time, please do not hesitate to buy me a cup of coffee! ;)
The more caffeine I get, the more useful projects I can make in the future.

Key features #

Access to Emoji, Gif and Sticker picker
Giphy gifs
Developer determined Stickers
Lightweight Package
Faster Loading
Null-safety
Material Design and Cupertino mode
Emojis that cannot be displayed are filtered out (Android Only)
Optional recently used tabs
Skin Tone Support for emojis
Completely customizable

Getting Started #
Installation #
Add Get to your pubspec.yaml file:
dependencies:
flutter_social_keyboard: <version>
copied to clipboard
Import get in files that it will be used:
import 'package:flutter_social_keyboard/flutter_social_keyboard.dart';
copied to clipboard

Emoji setup #

Do nothing

Gif setup #
Package depends on GIPHY GIF

Sign up as giphy developer to optain API Key
Giphy API Key is required to use the gif picker in this package

Sticker setup #
Package depends on your project asset for sticker images

Create an asset folder in your project directory (name must be asset)
Create a folder named stickers within the asset folder
Create sub-folders in the sticker containing an the sticker asset files



Folder names of the sub-folders in the sticker folders are considered as categories and tab names
Supported files include .png, .gif, .webp, .jpg and .jpeg,
Link all sticker folders in the pubspec.yaml file




Usage #
FlutterSocialKeyboard(
onEmojiSelected: (Category category, Emoji emoji) {
// Do something when emoji is tapped (optional)
},
onGifSelected: (GiphyGif gif) {
// Do something when gif is tapped (optional)
},
onStickerSelected: (Sticker sticker) {
// Do something when sticker is tapped (optional)
},
onBackspacePressed: () {
// Do something when the user taps the backspace button (optional)
},
keyboardConfig: KeyboardConfig(
useEmoji: true, //Enable emoji picker
useGif: true, //Enable gif picker
useSticker: true, //Enable Sticker picker
giphyAPIKey: "API KEY HERE",
gifTabs: ["Hey", "One", 'Haha', 'Sad', 'Love', 'Reaction'],
gifHorizontalSpacing: 5,
gifVerticalSpacing: 5,
gifColumns: 3,
gifLang: GiphyLanguage.english,
stickerColumns: 5,
stickerHorizontalSpacing: 5,
stickerVerticalSpacing: 5,
withSafeArea: true,
emojiColumns: 9,
emojiSizeMax: 32 * (Platform.isIOS ? 1.30 : 1.0),
emojiVerticalSpacing: 0,
emojiHorizontalSpacing: 0,
gridPadding: EdgeInsets.zero,
initCategory: Category.RECENT,
bgColor: const Color(0xFFF2F2F2),
indicatorColor: Colors.blue,
iconColor: Colors.grey,
iconColorSelected: Colors.blue,
progressIndicatorColor: Colors.blue,
backspaceColor: Colors.blue,
skinToneDialogBgColor: Colors.white,
skinToneIndicatorColor: Colors.grey,
enableSkinTones: true,
showRecentsTab: true,
recentsLimit: 28,
noRecents: const Text(
'No Recents',
style: TextStyle(
fontSize: 20,
color: Colors.black26,
),
textAlign: TextAlign.center,
),
replaceRecentOnLimitExceed: true,
tabIndicatorAnimDuration: kTabScrollDuration,
categoryIcons: const CategoryIcons(),
buttonMode: ButtonMode.CUPERTINO,
showBackSpace: true,
showSearchButton: true,
),
),

copied to clipboard
See the demo for more detailed sample project.
KeyboardConfig #



property
description
default




useEmoji
Enable Emoji keyboard
true


useGif
Enable Gif keyboard
true


useSticker
Enable Sticker keyboard
true


withSafeArea
Apply [SafeArea] widget around keyboard
true


showSearchButton
Show search button on the bottom nav
true


showBackSpace
Show backspace button on the bottom nav
7


giphyAPIKey
Your Giphy API Key. It is required when using gif. You can get one from https://developers.giphy.com/dashboard
null


gifTabs
Create tabs that would serve as categories for gifs from giphy
['Haha', 'Sad', 'Love', 'Reaction']


gifColumns
Number of gifs per row
3


gifVerticalSpacing
Vertical spacing between gifs
5


gifHorizontalSpacing
Horizontal spacing between gifs
5


gifLang
Language giphy suppose to use in search
GiphyLanguage.english


stickerColumns
Number of stickers per row
4


stickerVerticalSpacing
Vertical spacing between stickers
5


stickerHorizontalSpacing
Horizontal spacing between stickers
5


emojiColumns
Number of emojis per row
7


emojiSizeMax
Width and height the emoji will be maximal displayed
32.0


emojiVerticalSpacing
Vertical spacing between emojis
0


emojiHorizontalSpacing
Horizontal spacing between emojis
0


gridPadding
The padding of GridView
EdgeInsets.zero


initCategory
The initial Category that will be selected for the emoji picker
Category.RECENT


bgColor
The background color of the Widget
Color(0xFFF2F2F2)


indicatorColor
The color of the category indicator
Colors.blue


iconColor
The color of the category icons
Colors.grey


iconColorSelected
The color of the category icon when selected
Colors.blue


progressIndicatorColor
The color of the loading indicator during initialization
Colors.blue


backspaceColor
The color of the backspace icon button
Colors.blue


skinToneDialogBgColor
The background color of the skin tone dialog
Colors.white


skinToneIndicatorColor
Color of the small triangle next to multiple skin tone emoji
Colors.grey


enableSkinTones
Enable feature to select a skin tone of certain emoji's
true


showRecentsTab
Show extra tab with recently used emoji, sticker or gif
true


recentsLimit
Limit of recently used emoji that will be saved
28


replaceEmojiOnLimitExceed
Replace latest emoji on recents list on limit exceed
false


noRecents
A widget (usually [Text]) to be displayed if no recent emojis to display
Text('No Recents', style: TextStyle(fontSize: 20, color: Colors.black26), textAlign: TextAlign.center)


loadingIndicator
A widget to display while emoji picker is initializing
SizedBox.shrink()


tabIndicatorAnimDuration
Duration of tab indicator to animate to next category
Duration(milliseconds: 300)


categoryIcons
Determines the icon to display for each Category. You can change icons by setting them in the constructor.
CategoryIcons()


buttonMode
Choose between Material and Cupertino button style
ButtonMode.MATERIAL


checkPlatformCompatibility
Whether to filter out glyphs that platform cannot render with the default font (Android).
true


emojiSet
Custom emoji set, can be built based on defaultEmojiSet provided by the library.
null


emojiTextStyle
Text style to apply to individual emoji icons. Can be used to define custom emoji font either with GoogleFonts library or bundled with the app.
null



Extended usage with EmojiPickerUtils #
// Get recently used
final recentEmojis = await EmojiPickerUtils().getRecentEmojis();

final recentStickers = await StickerPickerUtils().getRecentStickers();

final recentGifs = await GiphyGifPickerUtils().getRecentGiphyGif();



// Search for related emoticons, stickers and gifs based on keywords and names/titles
final filterEmojis = await EmojiPickerUtils().searchEmoji("face", defaultEmojiSet);

final filterStickers = await StickerPickerUtils().searchSticker("funny", context);

final filterGifs = await GiphyGifPickerUtils().searchGiphyGif("love", keyboardConfig);


/// Add an Emoji, Sticker and Gif to recently used list or increase its counter
final newRecentEmojis = await EmojiPickerUtils().addEmojiToRecentlyUsed(key: key, emoji: emoji); // Important: Needs same key instance of type GlobalKey<EmojiPickerState> here and for the EmojiPicker-Widget in order to work properly

final addRecentSticker = await StickerPickerUtils().addStickerToRecentlyUsed(key: key, sticker: sticker, keyboardConfig: keyboardConfig); // Important: Needs same key instance of type GlobalKey<StickerPickerWidgetState> here and for the StickerPicker-Widget in order to work properly

final addRecentGif = await GiphyGifPickerUtils().addGiphyGifToRecentlyUsed(giphyGif: giphyGif, keyboardConfig: keyboardConfig);


copied to clipboard
Feel free to contribute to this package!! 🙇‍♂️ #
Always happy if anyone wants to help to improve this package!




Feature Requests and Issues #
Please file feature requests and bugs at the issue tracker.

Connect with me #




Visitors Count #

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.