Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

50 lignes
1.3 KiB

  1. //
  2. // Created by yangbin on 2021/11/12.
  3. //
  4. #include <windows.h>
  5. #include "flutter_view.h"
  6. #include <iostream>
  7. #include "utils.h"
  8. #include "message_channel_plugin.h"
  9. namespace webview_window {
  10. FlutterView::FlutterView(std::vector<std::string> arguments) {
  11. flutter::DartProject project(L"data");
  12. project.set_dart_entrypoint_arguments(std::move(arguments));
  13. // The size here must match the window dimensions to avoid unnecessary surface
  14. // creation / destruction in the startup path.
  15. flutter_controller_ = std::make_unique<flutter::FlutterViewController>(0, 0, project);
  16. // Ensure that basic setup of the controller was successful.
  17. if (!flutter_controller_->engine() || !flutter_controller_->view()) {
  18. std::cerr << "Failed to setup Flutter engine." << std::endl;
  19. return;
  20. }
  21. RegisterClientMessageChannelPlugin(flutter_controller_->engine()->GetRegistrarForPlugin("WebviewUniversalPlugin"));
  22. }
  23. FlutterView::~FlutterView() {
  24. if (flutter_controller_) {
  25. flutter_controller_ = nullptr;
  26. }
  27. }
  28. std::optional<LRESULT> FlutterView::HandleTopLevelWindowProc(HWND hwnd, UINT message, WPARAM w_param, LPARAM l_param) {
  29. return flutter_controller_->HandleTopLevelWindowProc(hwnd, message, w_param, l_param);
  30. }
  31. void FlutterView::ReloadSystemFonts() {
  32. flutter_controller_->engine()->ReloadSystemFonts();
  33. }
  34. void FlutterView::ForceRedraw() {
  35. }
  36. }