0

I am having a problem using the SendMessage function from the Flutter port of TDLib which can be found here: https://pub.dev/packages/tdlib. Although I am executing other functions from that plugin in a similar fashion, they work just fine, I don't exactly understand what causes this issue. Here is the example of my function usage:

sendMessage() async {
    TdApi.FormattedText messageText = TdApi.FormattedText(text: messageGetter.text,);

    TdApi.MessageSendOptions messageSendOptions = TdApi.MessageSendOptions(disableNotification: false) ;
    
    TdApi.InputMessageText message = TdApi.InputMessageText(text: messageText);

    final result = await context.read<TelegramService>().send(
      TdApi.SendMessage(chatId: contact_id, inputMessageContent: message, options: messageSendOptions),
    );

    print(result);
  }

The stacktrace from Android Studio:

E/flutter (13086): #0      _JsonStringifier.writeObject (dart:convert/json.dart:688:7)
E/flutter (13086): #1      _JsonStringStringifier.printOn (dart:convert/json.dart:877:17)
E/flutter (13086): #2      _JsonStringStringifier.stringify (dart:convert/json.dart:862:5)
E/flutter (13086): #3      JsonEncoder.convert (dart:convert/json.dart:262:30)
E/flutter (13086): #4      JsonCodec.encode (dart:convert/json.dart:172:45)
E/flutter (13086): #5      TdClient.clientSend (package:tdlib/src/tdclient/tdclient.dart:32:63)
E/flutter (13086): #6      TelegramService.send (package:fima/services/telegram_service.dart:195:22)
E/flutter (13086): #7      _ChatScreenState.sendMessage (package:fima/screens/main/chat.dart:210:58)
E/flutter (13086): #8      _ChatScreenState.build.<anonymous closure>.<anonymous closure> (package:fima/screens/main/chat.dart:94:50)
E/flutter (13086): #9      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
E/flutter (13086): #10     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (13086): #11     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:607:11)
E/flutter (13086): #12     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
E/flutter (13086): #13     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230:7)
E/flutter (13086): #14     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:475:9)
E/flutter (13086): #15     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:93:12)
E/flutter (13086): #16     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:138:9)
E/flutter (13086): #17     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:397:8)
E/flutter (13086): #18     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:136:18)
E/flutter (13086): #19     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:122:7)
E/flutter (13086): #20     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439:19)
E/flutter (13086): #21     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
E/flutter (13086): #22     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:287:11)
E/flutter (13086): #23     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
E/flutter (13086): #24     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
E/flutter (13086): #25     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
E/flutter (13086): #26     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
E/flutter (13086): #27     _rootRunUnary (dart:async/zone.dart:1370:13)
E/flutter (13086): #28     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (13086): #29     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (13086): #30     _invoke1 (dart:ui/hooks.dart:182:10)
E/flutter (13086): #31     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:282:7)
E/flutter (13086): #32     _dispatchPointerDataPacket (dart:ui/hooks.dart:96:31)
Onionus
  • 1
  • 1
  • Hey @Onionus! Two options: First, use the debugger, look at the stack trace to determine where exactly the json encoding is failing. Second, raise an issue in the repository: https://github.com/i-Naji/tdlib/issues – happy-san Jul 29 '21 at 13:03
  • Hey, thanks for your help, here is the stack trace, not sure what it means though haha. – Onionus Jul 29 '21 at 14:01
  • Do you see the problem in the stacktrace I uploaded? – Onionus Jul 29 '21 at 18:58
  • Someone who has experience with this package/the person who has developed it would quickly understand the stack trace. That's why I suggested opening an issue in github as well. – happy-san Jul 29 '21 at 19:12

1 Answers1

0

For anyone who is ever having the same problem, I think I solved it. The function SendMessage() from TdApi requires the "options:" parameter to have a value. This can be done with the object MessageSendOptions(). Use this documentation for reference: https://pub.dev/documentation/tdlib/latest/td_api/SendMessage-class.html

Onionus
  • 1
  • 1