#ifndef RUNNER_FLUTTER_WINDOW_H_ #define RUNNER_FLUTTER_WINDOW_H_ #include #include #include #include "flutter/method_channel.h" #include "flutter/plugin_registrar_windows.h" #include "flutter/standard_method_codec.h" #include "win32_window.h" // A window that does nothing but host a Flutter view. class FlutterWindow : public Win32Window { public: // Creates a new FlutterWindow hosting a Flutter view running |project|. explicit FlutterWindow(const flutter::DartProject& project); virtual ~FlutterWindow(); auto GetMessenger() -> flutter::BinaryMessenger* { return flutter_controller_ ? flutter_controller_->engine()->messenger() : nullptr; } protected: // Win32Window: bool OnCreate() override; void OnDestroy() override; LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, LPARAM const lparam) noexcept override; private: // The project to run. flutter::DartProject project_; // The Flutter instance hosted by this window. std::unique_ptr flutter_controller_; std::unique_ptr> message_channel_; std::unique_ptr> registrar_; void CreateMessageChannel(); static void HandleMethodCall( const flutter::MethodCall& method_call, std::unique_ptr> result); }; #endif // RUNNER_FLUTTER_WINDOW_H_