diff --git a/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h index e1f164076aebb362c9be636569a1b9a135aa3292..4baa083cca1176f5f3e9a422e5e36abb074cd5d6 100644 --- a/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h +++ b/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h @@ -48,11 +48,18 @@ class MethodChannel { MethodCall method_call(method, std::move(arguments)); std::unique_ptr> message = codec_->EncodeMethodCall(method_call); - messenger_->Send(name_, message->data(), message->size()); + messenger_->Send(name_, message->data(), message->size(), nullptr); } - // TODO: Add support for a version of InvokeMethod expecting a reply once - // https://github.com/flutter/flutter/issues/18852 is fixed. + // Sends a message to the Flutter engine on this channel expecting a reply. + void InvokeMethod(const std::string& method, + std::unique_ptr arguments, + flutter::BinaryReply reply) { + MethodCall method_call(method, std::move(arguments)); + std::unique_ptr> message = + codec_->EncodeMethodCall(method_call); + messenger_->Send(name_, message->data(), message->size(), reply); + } // Registers a handler that should be called any time a method call is // received on this channel. diff --git a/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc b/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc index cf28181ed4410f35984619f281ff21bc764c4a22..7ca7c3de73b1cbbb606c8c3993a14d574502de98 100644 --- a/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc +++ b/shell/platform/common/cpp/client_wrapper/plugin_registrar.cc @@ -98,8 +98,8 @@ void BinaryMessengerImpl::Send(const std::string& channel, const size_t message_size, BinaryReply reply) const { if (reply == nullptr) { - std::cerr << "Calling BinaryMessengerImpl::Send expecting a reply, but the " - "callback is null.\n"; + FlutterDesktopMessengerSend(messenger_, channel.c_str(), message, + message_size); return; } struct Captures { diff --git a/shell/platform/darwin/common/framework/Headers/FlutterChannels.h b/shell/platform/darwin/common/framework/Headers/FlutterChannels.h index 83c9e989762e49e6a7567dfd3118ec056a557982..b0a81e9e7de2562bd0c089fc239f0159e0783207 100644 --- a/shell/platform/darwin/common/framework/Headers/FlutterChannels.h +++ b/shell/platform/darwin/common/framework/Headers/FlutterChannels.h @@ -234,11 +234,7 @@ FLUTTER_EXPORT */ - (void)invokeMethod:(NSString*)method arguments:(id _Nullable)arguments - result:(FlutterResult _Nullable)callback - // TODO: Add macOS support for replies once - // https://github.com/flutter/flutter/issues/18852 is fixed. - API_UNAVAILABLE(macos); - + result:(FlutterResult _Nullable)callback; /** * Registers a handler for method calls from the Flutter side. *