buildLastMessageItem method

FutureBuilder<ChatMessageModel> buildLastMessageItem()

Implementation

FutureBuilder<ChatMessageModel> buildLastMessageItem() {
  // LogMessage.d("buildLastMessageItem: ", item.jid);
  return FutureBuilder(
      key: ValueKey(item.lastMessageId),
      future: getMessageOfId(item.lastMessageId.checkNull()),
      builder: (context, data) {
        // LogMessage.d("getMessageOfId future", "${item.lastMessageId.checkNull()} : ${data.data?.messageId}");
        if (data.hasData && data.data != null && !data.hasError) {
          var chat = data.data!;
          return Row(
            children: [
              checkSenderShouldShow(chat)
                  ? Flexible(
                      child: Text(
                        "${chat.senderUserName.checkNull()}:",
                        style: Theme.of(context).textTheme.titleSmall,
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                      ),
                    )
                  : const SizedBox.shrink(),
              chat.isMessageRecalled.value
                  ? const SizedBox.shrink()
                  : forMessageTypeIcon(
                      chat.messageType, chat.mediaChatMessage),
              SizedBox(
                width: chat.isMessageRecalled.value
                    ? 0.0
                    : forMessageTypeString(chat.messageType,
                                content:
                                    chat.messageTextContent.checkNull()) !=
                            null
                        ? 3.0
                        : 0.0,
              ),
              Expanded(
                child: spanTxt.isEmpty
                    ? Text(
                        chat.isMessageRecalled.value
                            ? setRecalledMessageText(chat.isMessageSentByMe)
                            : forMessageTypeString(chat.messageType,
                                    content: chat
                                        .mediaChatMessage?.mediaCaptionText
                                        .checkNull()) ??
                                chat.messageTextContent.checkNull(),
                        style: Theme.of(context).textTheme.titleSmall,
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                      )
                    : spannableText(
                        chat.isMessageRecalled.value
                            ? setRecalledMessageText(chat.isMessageSentByMe)
                            : forMessageTypeString(
                                    chat.messageType.checkNull(),
                                    content: chat
                                        .mediaChatMessage?.mediaCaptionText
                                        .checkNull()) ??
                                chat.messageTextContent.checkNull(),
                        spanTxt,
                        Theme.of(context).textTheme.titleSmall),
              ),
            ],
          );
        }
        return const SizedBox(
          height: 15,
        );
      });
}