如何解决Flutter window_utils 未编译代码并给出 CMakeLists.txt 文件错误
我在我的 Flutter 桌面应用程序中使用 window_utils Flutter 插件。当我运行我的应用程序时,我收到此错误 Image1。
https://pub.dev/documentation/window_utils/latest/
我尝试了这个插件的所有版本,但没有奏效。任何人都可以帮我解决什么问题以及如何解决。
解决方法
问题在于,在插件构建系统和 API 完全稳定之前,该插件是针对 Flutter 桌面支持的早期预发布版本编写的。不幸的是,尽管当时有明确的警告反对这样做,但它还是发布了,然后,可以预见的是,在下一次重大更改发生时很快就停止了工作。由于在那之后它没有更新,它从那时起就再也没有工作过。
除了fork它并为插件系统的最终版本重写它(包括完全替换其构建系统)或使用不同的插件之外,没有其他方法可以解决它。
,虽然插件已经过时,但 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,flags);
flutter::EncodableValue response(true);
result->Success(&response);
}
}
我已经在我的应用中对其进行了测试。
隐藏标题栏前:
隐藏标题栏后:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。