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: recentChatItemStyle
                            .subtitleTextStyle, //Theme.of(context).textTheme.titleSmall,
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                      ),
                    )
                  : const SizedBox.shrink(),
              chat.isMessageRecalled.value
                  ? const SizedBox.shrink()
                  : MessageUtils.forMessageTypeIcon(
                      chat.messageType, chat.mediaChatMessage),
              SizedBox(
                width: chat.isMessageRecalled.value
                    ? 0.0
                    : MessageUtils.forMessageTypeString(chat.messageType,
                                content:
                                    chat.messageTextContent.checkNull()) !=
                            null
                        ? 3.0
                        : 0.0,
              ),
              Expanded(
                  child: spanTxt.isEmpty
                      ? Text(
                          chat.isMessageRecalled.value
                              ? setRecalledMessageText(chat.isMessageSentByMe)
                              : MessageUtils.forMessageTypeString(
                                      chat.messageType,
                                      content: chat
                                          .mediaChatMessage?.mediaCaptionText
                                          .checkNull()) ??
                                  chat.messageTextContent.checkNull(),
                          style: recentChatItemStyle
                              .subtitleTextStyle, //Theme.of(context).textTheme.titleSmall,
                          maxLines: 1,
                          overflow: TextOverflow.ellipsis,
                        )
                      : spannableText(
                          chat.isMessageRecalled.value
                              ? setRecalledMessageText(chat.isMessageSentByMe)
                              : MessageUtils.forMessageTypeString(
                                      chat.messageType.checkNull(),
                                      content: chat
                                          .mediaChatMessage?.mediaCaptionText
                                          .checkNull()) ??
                                  chat.messageTextContent.checkNull(),
                          spanTxt,
                          recentChatItemStyle.subtitleTextStyle,
                          recentChatItemStyle
                              .spanTextColor) //Theme.of(context).textTheme.titleSmall),
                  ),
            ],
          );
        }
        return const SizedBox(
          height: 15,
        );
      });
}