downloadMediaMessage method

Future<void> downloadMediaMessage(
  1. RCIMIWMediaMessage message, {
  2. dynamic downloaded(
    1. int? code,
    2. RCIMIWMediaMessage? message
    )?,
  3. dynamic downloading(
    1. RCIMIWMediaMessage? message,
    2. int? progress
    )?,
  4. dynamic downloadCancel(
    1. RCIMIWMediaMessage? message
    )?,
})

Implementation

Future<void> downloadMediaMessage(
  RCIMIWMediaMessage message, {
  Function(int? code, RCIMIWMediaMessage? message)? downloaded,
  Function(RCIMIWMediaMessage? message, int? progress)? downloading,
  Function(RCIMIWMediaMessage? message)? downloadCancel,
}) async {
  await engineProvider.engine?.downloadMediaMessage(message,
      listener: RCIMIWDownloadMediaMessageListener(
        onMediaMessageDownloaded: (int? code, RCIMIWMediaMessage? message) {
          if (code == 0) {
            for (int i = 0; i < _messages.length; i++) {
              if (_messages[i].messageId == message?.messageId) {
                _messages[i] = message!;
                // 如果消息不是gif,则通知消息列表更新,因为gif会跳动
                if (message is! RCIMIWGIFMessage) {
                  notifyListeners();
                }
                break;
              }
            }
          }
          downloaded?.call(code, message);
          RCIMWrapperPlatform.instance.writeLog(
              'RCKChatProvider downloadMediaMessage',
              '',
              code ?? 0,
              'onMediaMessageDownloaded: ${message?.messageId}');
        },
        onMediaMessageDownloading: (message, progress) {
          downloading?.call(message, progress);
        },
        onDownloadingMediaMessageCanceled: (message) {
          downloadCancel?.call(message);
          RCIMWrapperPlatform.instance.writeLog(
              'RCKChatProvider downloadMediaMessage',
              '',
              0,
              'onDownloadingMediaMessageCanceled: ${message?.messageId}');
        },
      ));
}