diff --git a/lib/home/splash_page.dart b/lib/home/splash_page.dart index 92c19c54c..1a0b378a9 100644 --- a/lib/home/splash_page.dart +++ b/lib/home/splash_page.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:desktop_window/desktop_window.dart'; import 'package:flutter/material.dart'; import 'package:flutter_deer/demo/demo_page.dart'; import 'package:flutter_deer/login/login_router.dart'; @@ -46,10 +45,7 @@ class _SplashPageState extends State { } _initSplash(); }); - /// 设置桌面端窗口大小 - if (Device.isDesktop) { - DesktopWindow.setWindowSize(const Size(400, 800)); - } + if (Device.isAndroid) { const QuickActions quickActions = QuickActions(); quickActions.initialize((String shortcutType) async { diff --git a/lib/main.dart b/lib/main.dart index 4a91d8b78..b70affea9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,6 +20,7 @@ import 'package:provider/provider.dart'; import 'package:quick_actions/quick_actions.dart'; import 'package:sp_util/sp_util.dart'; import 'package:url_strategy/url_strategy.dart'; +import 'package:window_manager/window_manager.dart'; Future main() async { // debugProfileBuildsEnabled = true; @@ -30,6 +31,25 @@ Future main() async { /// 确保初始化完成 WidgetsFlutterBinding.ensureInitialized(); + if (Device.isDesktop) { + await WindowManager.instance.ensureInitialized(); + windowManager.waitUntilReadyToShow().then((_) async { + /// 隐藏标题栏及操作按钮 + // await windowManager.setTitleBarStyle( + // TitleBarStyle.hidden, + // windowButtonVisibility: false, + // ); + /// 设置桌面端窗口大小 + await windowManager.setSize(const Size(400, 800)); + await windowManager.setMinimumSize(const Size(400, 800)); + /// 居中显示 + await windowManager.center(); + await windowManager.show(); + await windowManager.setPreventClose(false); + await windowManager.setSkipTaskbar(false); + }); + } + /// 去除URL中的“#”(hash),仅针对Web。默认为setHashUrlStrategy /// 注意本地部署和远程部署时`web/index.html`中的base标签,https://github.com/flutter/flutter/issues/69760 setPathUrlStrategy(); diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 058ce1304..2ba836907 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,18 +5,20 @@ import FlutterMacOS import Foundation -import desktop_window import device_info_plus import path_provider_macos +import screen_retriever import shared_preferences_macos import sqflite import url_launcher_macos +import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 2ec4ad4d1..06e594795 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -300,22 +300,24 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", - "${BUILT_PRODUCTS_DIR}/desktop_window/desktop_window.framework", "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", + "${BUILT_PRODUCTS_DIR}/screen_retriever/screen_retriever.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences_macos/shared_preferences_macos.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", "${BUILT_PRODUCTS_DIR}/url_launcher_macos/url_launcher_macos.framework", + "${BUILT_PRODUCTS_DIR}/window_manager/window_manager.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/desktop_window.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/screen_retriever.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/window_manager.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/pubspec.yaml b/pubspec.yaml index 124163cba..1d46887b7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -67,8 +67,8 @@ dependencies: vibration_web: 1.6.5 # 获取当前设备信息 https://github.com/fluttercommunity/plus_plugins/tree/main/packages/device_info_plus device_info_plus: 8.0.0 - # 改变桌面端窗口大小(MacOS/Linux/Windows) https://github.com/mix1009/desktop_window - desktop_window: 0.4.0 + # 桌面应用调整窗口的大小和位置 https://github.com/leanflutter/window_manager + window_manager: 0.3.0 # 高德2D地图插件(支持Web) https://github.com/simplezhli/flutter_2d_amap flutter_2d_amap: git: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 33bc361ef..fe7ec1cb9 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,12 +6,15 @@ #include "generated_plugin_registrant.h" -#include +#include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { - DesktopWindowPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("DesktopWindowPlugin")); + ScreenRetrieverPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WindowManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowManagerPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d3bb57851..fb2dea6b4 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,8 +3,9 @@ # list(APPEND FLUTTER_PLUGIN_LIST - desktop_window + screen_retriever url_launcher_windows + window_manager ) list(APPEND FLUTTER_FFI_PLUGIN_LIST