44
55#include " flutter_window.h"
66
7+ #include < flutter/binary_messenger.h>
8+
79#include < memory>
810#include < optional>
911
1012#include " flutter/generated_plugin_registrant.h"
1113#include " messages.g.h"
1214
1315namespace {
16+ using pigeon_example::Code;
1417using pigeon_example::ErrorOr;
1518using pigeon_example::ExampleHostApi;
19+ using pigeon_example::FlutterError;
20+ using pigeon_example::MessageData;
21+ using pigeon_example::MessageFlutterApi;
1622
1723// #docregion cpp-class
1824class PigeonApiImplementation : public ExampleHostApi {
@@ -29,14 +35,34 @@ class PigeonApiImplementation : public ExampleHostApi {
2935 }
3036 void SendMessage (const MessageData& message,
3137 std::function<void (ErrorOr<bool > reply)> result) {
32- if (message.code == Code. kOne ) {
38+ if (message.code () == Code:: kOne ) {
3339 result (FlutterError (" code" , " message" , " details" ));
3440 return ;
3541 }
3642 result (true );
3743 }
3844};
3945// #enddocregion cpp-class
46+
47+ // #docregion cpp-method-flutter
48+ class PigeonFlutterApi {
49+ public:
50+ PigeonFlutterApi (flutter::BinaryMessenger* messenger)
51+ : flutterApi_(std::make_unique<MessageFlutterApi>(messenger)) {}
52+
53+ void CallFlutterMethod (
54+ const std::string& a_string,
55+ std::function<void (ErrorOr<std::string> reply)> result) {
56+ flutterApi_->FlutterMethod (
57+ &a_string, [result](const std::string& echo) { result (echo); },
58+ [result](const FlutterError& error) { result (error); });
59+ }
60+
61+ private:
62+ std::unique_ptr<MessageFlutterApi> flutterApi_;
63+ };
64+ // #enddocregion cpp-method-flutter
65+
4066} // namespace
4167
4268FlutterWindow::FlutterWindow (const flutter::DartProject& project)
@@ -49,15 +75,6 @@ bool FlutterWindow::OnCreate() {
4975 return false ;
5076 }
5177
52- // #docregion cpp-method-flutter
53- void TestPlugin::CallFlutterMethod (
54- String aString, std::function<void (ErrorOr<int64_t > reply)> result) {
55- MessageFlutterApi->FlutterMethod (
56- aString, [result](String echo) { result (echo); },
57- [result](const FlutterError& error) { result (error); });
58- }
59- // #enddocregion cpp-method-flutter
60-
6178 RECT frame = GetClientArea ();
6279
6380 // The size here must match the window dimensions to avoid unnecessary surface
0 commit comments