Flutter window_utils 未编译代码并给出 CMakeLists.txt 文件错误

Flutter window_utils not compiling code and giving CMakeLists.txt file error

我在我的 flutter 桌面应用程序中使用 window_utils flutter 插件。当我 运行 我的应用程序出现此错误 Image1.

这是我的 pubspec.yaml 代码 Image2。

https://pub.dev/documentation/window_utils/latest/

我试过这个插件的所有版本,但没有用。谁能帮我看看这是什么问题以及如何解决。

问题在于,在插件构建系统和 API 完全稳定之前,该插件是针对 Flutter 桌面支持的非常早期的预发布版本编写的。不幸的是,尽管当时明确警告不要这样做,但它还是发布了,然后,可以预见的是,当下一个重大变化发生时,它很快就停止工作了。由于在那之后它没有更新,它从那以后就再也没有用过。

除了为插件系统的最终版本(包括完全替换其构建系统)分叉和重写它,或者使用不同的插件之外,没有办法解决它。

虽然插件已过期,但 Windows 的 C++ 代码仍然可以工作。

您可以在 pub.dartlang.org\window_utils-1.0.2\windows 找到源代码。

自己用最新的Flutter SDK新建一个插件项目:

flutter create --template=plugin --platforms=windows test

lib.dart中定义一个Flutter方法:

static Future<void> hideTitleBar() async {
    await _channel.invokeMethod('hideTitleBar');
  }

将 C++ 代码添加到 *.cpp 文件:

void FlutterBarcodeSdkPlugin::HandleMethodCall(
      const flutter::MethodCall<flutter::EncodableValue> &method_call,
      std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result)
  {

    if (method_call.method_name().compare("hideTitleBar") == 0)
    {
      HWND hWnd = GetActiveWindow();
      SetMenu(hWnd, NULL);
      LONG lStyle = GetWindowLong(hWnd, GWL_STYLE);
      // lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
      // lStyle &= WS_DLGFRAME;
      lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_DLGFRAME);
      SetWindowLong(hWnd, GWL_STYLE, lStyle);
      LONG flags = SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER;
      SetWindowPos(hWnd, NULL, 0, 0, 0, 0, flags);
      flutter::EncodableValue response(true);
      result->Success(&response);
    }
}

我已经在我的应用程序中测试过了。

隐藏标题栏前:

隐藏标题栏后: