flutter_dr_uichat

Pub Package

Highly video, feature-packed flutter_dr_uichat widget for Flutter.

Image

Features

  • Message screen or Inbx Message Screen.
  • Chat Screen.

Usage

Make sure to check out examples

Installation

Add the following line to pubspec.yaml:

dependencies:
  flutter_dr_uichat: ^1.0.0

Basic setup

The complete example is available here.

Youn can check messages title screen

void main() {
  DRChatConfig.config.set(titleMessage: "Messages");
  runApp(const MyApp());
}

Init all function

  List<DRUIChatUser> users = [];
  List<DRUIChatMessage> chatMessages = [];
  @override
  void initState() {
    super.initState();
    //show chat bubble
    initChatBubble();
    //Set Message screen event
    setDRMessageEvent();
    //SetChat screen event
    setDRChatEvent();
  }

imlement all function to support lib


void initChatBubble() {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      DRUIChatBubble.initChatBubble(
        context,
        backgroundColor: Colors.green,
        delay: const Duration(seconds: 2), // Optional delay before showing
      );
    });
  }

  //Testing  Receiver
  void testingReceiver() {
    Future.delayed(const Duration(milliseconds: 500), () {
      DRChatService.chatService.addReceiver(
        DRUIChatMessage(
          id: 1,
          name: "kuchdarith",
          isSender: false,
          message: "Testing hi from Receiver?",
          photo:
              "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
          createdAt: DateTime.now().toUtc().toString(),
        ),
      );
    });
  }

  ///Start Chat Screen
  void setDRChatEvent() {
    //Chat screen ready to add message list.
    DRChatService.chatService.onChatLoaded = (data) {
      getChatMessageList();
    };
    //Get message when sender send chat to receiver.
    DRChatService.chatService.onMessage = (message) {
      DRChatService.chatService.addSender(
        DRUIChatMessage(
          id: 1,
          name: "kuchdarith",
          photo:
              "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQRXxfn1j1vKFy8yJeBGl2AS6Dcah-lKgHofg&s",
          isSender: true,
          message: message,
          createdAt: DateTime.now().toUtc().toString(),
        ),
      );
      //This testing receiver send back only.
      testingReceiver();
    };
  }

  //Get Chat lists
  void getChatMessageList() {
    chatMessages = [];
    chatMessages.add(
      DRUIChatMessage(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQRXxfn1j1vKFy8yJeBGl2AS6Dcah-lKgHofg&s",
        isSender: true,
      ),
    );
    chatMessages.add(
      DRUIChatMessage(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQRXxfn1j1vKFy8yJeBGl2AS6Dcah-lKgHofg&s",
        isSender: true,
      ),
    );
    chatMessages.add(
      DRUIChatMessage(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
        isSender: false,
      ),
    );
    chatMessages.add(
      DRUIChatMessage(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQRXxfn1j1vKFy8yJeBGl2AS6Dcah-lKgHofg&s",
        isSender: true,
      ),
    );

    DRChatService.chatService.setChatMessageLists(chatMessages);
  }
  //End Chat Screen

  ///Start Message Screen
  void setDRMessageEvent() {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      //Delete Message.
      DRChatService.chatService.onDeleteMessage = (data) {
        print("Delete");
      };
      DRChatService.chatService.onMessageRefresh = () async {
        getMessageList();
        await Future.delayed(const Duration(seconds: 1));
      };
      DRChatService.chatService.onMessageLoadMore = () async {
        await Future.delayed(const Duration(seconds: 1));
        loadMoreMessageList();
      };
      DRChatService.chatService.onMessageLoaded = (status) {
        getMessageList();
      };
    });
  }
  // load more for message list.
  void loadMoreMessageList() {
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
      ),
    );
  }
  //Get message list
  void getMessageList() {
    users = [];

    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Kuch Darith",
        message: "Hi , how are you?",
        createdAt: "2024-09-12T20:42:19Z",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Sok San",
        message: "hahaha",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );
    users.add(
      DRUIChatUser(
        id: Random().nextInt(10000),
        name: "Bopha",
        message: "hahaha",
        photo:
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS1oiHvf2LgSX3qMalIRToh28R40FJj4HA0Jg&s",
      ),
    );

    DRChatService.chatService.setMessageLists(users);
  }

function

use this function to init chat bubble icon.

      DRUIChatBubble.initChatBubble(
        context,
        backgroundColor: Colors.green,
        delay: const Duration(seconds: 2), // Optional delay before showing
      );

use for add message as receiver to chat

 DRChatService.chatService.addReceiver(
        DRUIChatMessage(
          id: 1,
          name: "kuchdarith",
          isSender: false,
          message: "Testing hi from Receiver?",
          photo:
              "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
          createdAt: DateTime.now().toUtc().toString(),
        ),
      );

use for add message as sender to chat

 DRChatService.chatService.addSender(
        DRUIChatMessage(
          id: 1,
          name: "kuchdarith",
          isSender: false,
          message: "Testing hi from Receiver?",
          photo:
              "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyCF3FunYuwPDPL9ovTOR0MQXdDJpW_ofgXA&s",
          createdAt: DateTime.now().toUtc().toString(),
        ),
      );

use for set item to message chat screen

DRChatService.chatService.setChatMessageLists(chatMessages);

use for set item to message screen

DRChatService.chatService.setMessageLists(users);

Event Message Screen

use fo callback when user delele messages.

  DRChatService.chatService.onDeleteMessage = (data) {
        print("Delete");
  };

use fo callback when user refrsh messages.

  DRChatService.chatService.onMessageRefresh = (data) {
        print("Delete");
  };

use fo callback when user refrsh messages.

  DRChatService.chatService.onMessageRefresh = () async {
     
  };

use fo callback when user load more messages.

  DRChatService.chatService.onMessageLoadMore = () async {
        
  };

use fo callback when massage screen ready loaded allow add message list.

  DRChatService.chatService.onMessageLoaded = (status) async {
        
  };

Event for Chat Screen

use fo callback when chat screen ready loaded allow add chat list.

  DRChatService.chatService.onChatLoaded = (data) async {
        
  };

use fo callback when user send message chat to receiver.

  DRChatService.chatService.onMessage = (message) async {
        
  };

Hello everyone πŸ‘‹

If you want to support me, feel free to do so.

Thanks

============================================

αžŸαž½αžŸαŸ’αžŠαžΈ αž’αŸ’αž“αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆπŸ‘‹

αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž…αž„αŸ‹β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αžαŸ’αž‰αž»αŸ† αžŸαžΌαž˜β€‹αž’αŸ’αžœαžΎβ€‹αžŠαŸ„αž™β€‹αžŸαŸαžšαžΈ ,

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽ

Libraries

flutter_dr_uichat