💬Criação/Update de chat

Descrição de como funciona a criação de um chat utilizando este plugin.

Para realizar de fato a criação de um chat, o plugin disponibiliza uma função que funciona de maneira muito simples. Um função que possui como argumento obrigatório apenas o objeto do usuário que vai participar deste chat juntamente com você (quem está criando o chat).

O objeto que é necessário nesta função, é um objeto do tipo User, mas que vem importado do plugin flutter_chat_types. Para seu uso, basta fazer a seguinte importação no arquivo:

import 'package:flutter_chat_types/flutter_chat_types.dart' as types;

E para seu uso:

types.User(
  id: 'id_do_firebase_aqui',
),

Vamos agora para a criação do chat em si. Como eu comentei o argumento obrigatório é o User, e você também pode adicionar um argumento de nome metadata, passando quaisquers valores necessários, que você desejar, para te ajudar no desenvolvimento e nas suas necessidades.

await FirebaseChatCore.instance.createRoom(
    otherUser,
    metadata: {},
 );

Após fazer esta chamada, vai ser criado um document no firebase, dentro da collection "rooms", que vai contér os seguintes valores:

  • createdAt: Data de criação do chat

  • imageUrl: Você pode adicionar posteriomente uma imagem ao seu chat

  • lastMessages: Para isso funcionar é necessário criar algumas functions

  • type: Apenas um valor que já vem direto do plugin (não alterar)

  • metadata: Objeto do tipo map que pode conter qualquer coisa.

  • name: Possível nome do chat

  • updatedAt: Última vez que ocorreu algumas atualização no chat.

  • userIds: Lista do tipo String que contém o id dos usuários que estão no chat.

E é possível perceber ainda que dentro deste documento, existe uma collection de nome "messages", que vai conter todas as mensagens enviadas dentro deste chat.

Além da criação do chat, podemos realizar o update dele, para alterar algumas destas informações, feito da seguinte maneira:

FirebaseChatCore.instance.updateRoom(
        types.Room(
          id: chatRoomId,
          type: types.RoomType.direct,
          users: users,
          metadata: metadata,
        ),
      );

Last updated