getImageOverlay function
Widget
getImageOverlay(
- BuildContext context,
- ChatMessageModel chatMessage, {
- dynamic onAudio()?,
- dynamic onVideo()?,
Implementation
Widget getImageOverlay(BuildContext context, ChatMessageModel chatMessage,
{Function()? onAudio, Function()? onVideo}) {
// debugPrint(
// "getImageOverlay checkFile ${checkFile(chatMessage.mediaChatMessage!.mediaLocalStoragePath)}");
// debugPrint("getImageOverlay messageStatus ${chatMessage.messageStatus}");
// debugPrint(
// "getImageOverlay ${(checkFile(chatMessage.mediaChatMessage!.mediaLocalStoragePath) && chatMessage.messageStatus != 'N')}");
if (AppUtils.isMediaExists(
chatMessage.mediaChatMessage!.mediaLocalStoragePath.value) &&
(!chatMessage.isMediaDownloading() &&
!chatMessage.isMediaUploading() &&
!chatMessage.isUploadFailed())) {
if (chatMessage.messageType.toUpperCase() == Constants.mVideo) {
return FloatingActionButton.small(
onPressed: onVideo,
backgroundColor: MirrorflyUikit.getTheme?.primaryColor,
child: Icon(
Icons.play_arrow_rounded,
color: MirrorflyUikit.getTheme?.colorOnPrimary,
),
);
} else if (chatMessage.messageType.toUpperCase() == Constants.mAudio) {
return InkWell(
onTap: onAudio,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: chatMessage.mediaChatMessage!.isPlaying
? SvgPicture.asset(
package: package,
pauseIcon,
colorFilter: ColorFilter.mode(
chatMessage.isMessageSentByMe
? MirrorflyUikit.getTheme!.chatBubblePrimaryColor
.textSecondaryColor
: MirrorflyUikit.getTheme!.chatBubbleSecondaryColor
.textSecondaryColor,
BlendMode.srcIn),
height: 17,
) //const Icon(Icons.pause)
: SvgPicture.asset(
package: package,
playIcon,
colorFilter: ColorFilter.mode(
chatMessage.isMessageSentByMe
? MirrorflyUikit.getTheme!.chatBubblePrimaryColor
.textSecondaryColor
: MirrorflyUikit.getTheme!.chatBubbleSecondaryColor
.textSecondaryColor,
BlendMode.srcIn),
height: 17,
),
),
); //const Icon(Icons.play_arrow_sharp);
} else {
return const SizedBox.shrink();
}
} else {
var status = 0;
if (chatMessage.isMessageSentByMe) {
if (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
Constants.mediaUploading ||
chatMessage.mediaChatMessage!.mediaDownloadStatus.value ==
Constants.mediaDownloading) {
status = (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
Constants.mediaUploading)
? Constants.mediaUploading
: Constants.mediaDownloading;
} else {
if (chatMessage.mediaChatMessage!.mediaLocalStoragePath.value
.checkNull()
.isNotEmpty) {
if (!AppUtils.isMediaExists(chatMessage
.mediaChatMessage!.mediaLocalStoragePath.value
.checkNull())) {
if (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
Constants.mediaUploaded) {
status = Constants
.mediaNotDownloaded; // for uploaded and deleted in local
} else {
status = -1;
//status = Constants.mediaNotDownloaded;
}
} else {
status = chatMessage.mediaChatMessage!.mediaUploadStatus.value;
}
} else {
status = chatMessage.mediaChatMessage!.mediaUploadStatus.value;
}
}
} else {
status = chatMessage.mediaChatMessage!.mediaDownloadStatus.value;
}
debugPrint("mediaStatus : $status messageId ${chatMessage.messageId}");
// debugPrint(
// "overlay status-->${chatMessage.isMessageSentByMe ? chatMessage.mediaChatMessage!.mediaUploadStatus : chatMessage.mediaChatMessage!.mediaDownloadStatus}");
switch (status) {
case Constants.mediaDownloaded:
case Constants.mediaUploaded:
case Constants.storageNotEnough:
if (!AppUtils.isMediaExists(chatMessage
.mediaChatMessage!.mediaLocalStoragePath.value
.checkNull())) {
return InkWell(
child: downloadView(
chatMessage.mediaChatMessage!.mediaFileSize,
chatMessage.messageType.toUpperCase(),
chatMessage.isMessageSentByMe),
onTap: () {
downloadMedia(context, chatMessage.messageId);
},
);
} else {
return const Offstage();
}
case Constants.mediaDownloadedNotAvailable:
case Constants.mediaUploadedNotAvailable:
return InkWell(
child: downloadView(
chatMessage.mediaChatMessage!.mediaFileSize,
chatMessage.messageType.toUpperCase(),
chatMessage.isMessageSentByMe),
onTap: () {
downloadMedia(context, chatMessage.messageId);
},
);
case Constants.mediaNotDownloaded:
return InkWell(
child: downloadView(
chatMessage.mediaChatMessage!.mediaFileSize,
chatMessage.messageType.toUpperCase(),
chatMessage.isMessageSentByMe),
onTap: () {
downloadMedia(context, chatMessage.messageId);
},
);
case Constants.mediaNotUploaded:
return InkWell(
onTap: () {
debugPrint("upload Media ==> ${chatMessage.messageId}");
uploadMedia(chatMessage.messageId);
},
child: uploadView(chatMessage.messageType.toUpperCase(),
chatMessage.isMessageSentByMe));
case Constants.mediaDownloading:
case Constants.mediaUploading:
return Obx(() {
return InkWell(
onTap: () {
cancelMediaUploadOrDownload(chatMessage.messageId);
},
child: downloadingOrUploadingView(
chatMessage.messageType,
chatMessage.mediaChatMessage!.mediaProgressStatus.value,
chatMessage.isMessageSentByMe));
});
default:
return InkWell(
onTap: () {
toToast(Constants.mediaDoesNotExist);
},
child: uploadView(chatMessage.messageType.toUpperCase(),
chatMessage.isMessageSentByMe));
}
}
}