🎬 fz_reactions_chat

A Flutter package for show Reaction Dialog Chat And Stack Widget.

📖 Table of Contents

🎥 Check out the video trimming in action!

Screens

Screen 1 Screen 2

Features

  • 🚀 A Flutter package for show Reaction Dialog Chat And Stack Widget.

Getting Started

  1. Add dependency: In your pubspec.yaml:
dependencies:
  fz_reactions_chat: ^0.0.1
  1. Install Package In your project:
flutter pub get
  1. Android Configuration: In your AndroidManifest.xml no Configuration Required:

in /android/app/build.gradle

minSdk = 24
// Prefered 
compileSdk = 34
  1. iOS Configuration: In your iOS Info.plist, no Configuration Required:

Usage

Here’s a complete example showing how to build a custom Reaction Dialog Chat using the fz_reactions_chat package.

usage fzReactionsChat Reaction Dialog

fzReactionsChat.showReactionsDialog(
context: context,
isMe: true,
onContextMenuSelected: (context, massageId) {},
onEmojiSelected: (reaction, massageId) {},
setMassageReplyNull: () {},
onTapPreviewImage: (image) {},
onReplyScroll: (_) {},
replayText: "Replay",
copyText: "Copy",
deleteText: "Delete",
closeText: "Close",
myMassageContent: const Text("My Massage"),
receiveMassageContent: const Text("receive Massage"),
messageId: "5",
reactionSelectedByMy: "❤️",
);

fzReactionsChat Stack Reaction

  fzReactionsChat.stackReactions(
isMe: true,
isDialogReactions: true,
size: 20,
onPressed: () {},
allMessageReactions: {"❤️": 5},
messageReactionsByCountForEachReaction: {"❤️": 1},
),

Example

class ChatReactions extends StatefulWidget {
  const ChatReactions({super.key, required this.title});

  final String title;

  @override
  State<ChatReactions> createState() => _ChatReactionsState();
}

class _ChatReactionsState extends State<ChatReactions> {
  FzReactionsChat fzReactionsChat = FzReactionsChat();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const SizedBox(height: 50),
            TextButton(
              onPressed: () {
                fzReactionsChat.showReactionsDialog(
                  context: context,
                  isMe: true,
                  onContextMenuSelected: (context, massageId) {},
                  onEmojiSelected: (reaction, massageId) {},
                  setMassageReplyNull: () {},
                  onTapPreviewImage: (image) {},
                  onReplyScroll: (_) {},
                  replayText: "Replay",
                  copyText: "Copy",
                  deleteText: "Delete",
                  closeText: "Close",
                  myMassageContent: const Text("My Massage"),
                  receiveMassageContent: const Text("receive Massage"),
                  messageId: "5",
                  reactionSelectedByMy: "❤️",
                );
              },
              child: const Text("Show Reaction Dialog Chat"),
            ),
            const SizedBox(height: 200),
            SizedBox(
              width: 50,
              height: 50,
              child: Stack(
                alignment: Alignment.topCenter,
                children: [
                  Container(
                    width: 50,
                    height: 30,
                    alignment: Alignment.center,
                    decoration: BoxDecoration(
                      color: Colors.purple,
                      borderRadius: BorderRadius.circular(5),
                    ),
                  ),
                  Positioned(
                    bottom: 0,
                    left: 5,
                    right: 0,
                    child: fzReactionsChat.stackReactions(
                      isMe: true,
                      isDialogReactions: true,
                      size: 20,
                      width: 50,
                      onPressed: () {},
                      allMessageReactions: {"❤️": 5},
                      messageReactionsByCountForEachReaction: {"❤️": 1},
                    ),
                  ),
                ],
              ),
            ),
            const SizedBox(height: 50),
          ],
        ),
      ),
    );
  }
}

Example_Full_Code

You Can Find The Full Code Here

Dependencies Used

This package uses (You do not have to import them):

animate_do:  
Before using this example directly in a Flutter app, don't forget to add the fz_reactions_chat packages to your pubspec.yaml file.
You can try out this example by replacing the entire content of main.dart file of a newly created
Flutter project.

About the Developer

Hello! 👋 I'm Fady Zaher, a Mid Level Flutter Developer with extensive experience in building high-quality mobile applications.


If you like this package, feel free to ⭐️ the repo and share it!

📝 License MIT License

Copyright (c) 2025 Fady Zaher

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.