A generic but configurable emoji picker for Flutter
  • Dart 97.7%
  • Nix 1.3%
  • HTML 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-28 14:38:27 -04:00
.widget_preview adjust padding 2026-09-16 16:10:04 -04:00
assets bump to 1.1.1+2 2026-09-17 12:13:38 -04:00
lib add isFreeText to onSelection 2026-09-28 14:37:26 -04:00
scripts minify emoji json 2026-09-17 09:48:34 -04:00
.envrc initial commit 2026-09-16 14:05:18 -04:00
.gitignore initial commit 2026-09-16 14:05:18 -04:00
.metadata initial commit 2026-09-16 14:05:18 -04:00
analysis_options.yaml initial commit 2026-09-16 14:05:18 -04:00
CHANGELOG.md bump to 1.2.0 2026-09-28 14:38:27 -04:00
devshell.nix initial commit 2026-09-16 14:05:18 -04:00
flake.lock initial commit 2026-09-16 14:05:18 -04:00
flake.nix initial commit 2026-09-16 14:05:18 -04:00
LICENSE initial commit 2026-09-16 14:05:18 -04:00
pubspec.lock use a sliver-based approach 2026-09-17 11:13:36 -04:00
pubspec.yaml bump to 1.2.0 2026-09-28 14:38:27 -04:00
README.md bump to 1.2.0 2026-09-28 14:38:27 -04:00

A configurable emoji picker for Flutter. It defaults to Unicode emojis sourced from gemoji, but can be extended with custom emojis rendered as arbitrary Flutter widgets.

Features

  • Up-to-date Unicode emojis, sourced from gemoji
  • Custom emoji categories that can be prepended or appended to the default categories
  • Custom emojis can be rendered as arbitrary Flutter widgets, supporting images, GIFs, stickers, and more
  • Recent emojis can be easily implemented using prependCategories
  • Optional free-text selection
  • Designed for high performance using slivers and a custom scroll listener
  • Sleek Material 3 design

A screenshot of the emoji picker, showing a search bar, category selection, and two categories of emojis

Getting started

Add the package to your project with flutter pub get.

Usage

EmojiPicker is can be used in a variety of contexts, including bottom sheets, dialogs, or directly in your widget tree.

For example, using it as a bottom sheet:

showModalBottomSheet(
  isScrollControlled: true,
  context: context,
  builder: (context) => EmojiPicker(
    onSelection: (emoji, isFreeText) {
      Navigator.of(context).pop();
      message.sendReaction(emoji);
    },
  ),
);

Custom emojis

Custom categories can contain Emoji objects whose widget can be any Flutter widget. This makes it possible to use image-based emojis, GIFs, stickers, or other custom visual representations:

Emoji(
  widget: Image.network('https://example.com/blob.webp'),
  value: ':blob:',
  aliases: ['blob'],
  description: 'Blob',
  tags: ['custom', 'blob'],
)

Accepted Parameters

  • IList<EmojiCategory> prependCategories: Categories to prepend to the default emoji list
  • IList<EmojiCategory> appendCategories: Categories to append to the default emoji list
  • required FutureOr<void> Function(String value) onSelection: Function to be called when an emoji is selected
  • bool allowFreeText = false: Whether to allow free text to be returned. Defaults to false.