sendImageFile method
Implementation
Future<void> sendImageFile(BuildContext context, File file) async {
Uint8List imageBytes = file.readAsBytesSync();
var size = imageBytes.length;
if (size > 512000) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text('Image exceeds the maximum limit of 512KB. Please try with an image of lower size.')));
} else {
var key = AtKey()
..key = chatImageKey + (isGroupChat ? groupChatId! : '') + DateTime.now().millisecondsSinceEpoch.toString()
..sharedBy = currentAtSign!
..sharedWith = chatWithAtSign
..metadata = Metadata();
key.metadata.ccd = true;
key.metadata.ttr = -1;
key.metadata.isBinary = true;
if (isGroupChat) {
await Future.forEach(groupChatMembers!, (dynamic member) async {
if (member != currentAtSign) {
key.sharedWith = member;
await atClientManager.atClient.put(key, imageBytes);
// send notification for groupChat
}
});
} else {
await atClientManager.atClient.put(key, imageBytes);
//send notification
}
await setChatHistory(
Message(
message: key.toString(),
sender: currentAtSign,
time: DateTime.now().millisecondsSinceEpoch,
type: MessageType.outgoing,
contentType: MessageContentType.image,
),
imageData: imageBytes);
}
}