diff --git a/.gitignore b/.gitignore index 710724d..1b728cc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ build/ pubspec.lock .vscode/settings.json .idea/workspace.xml + +# Swift package manager +.build/ +.swiftpm/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bf4911..828754f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.8.2 +- Add support for Swift Package Manager. (Thanks to [@EchoEllet](https://github.com/EchoEllet)!) +- Migrate away from deprecated interfaces. +- Add missing documentation to `WindowManipulator.updateToolbarPassthroughView` and `WindowManipulator.removeToolbarPassthroughView`. + ## 1.8.1 - Provide support for older Swift compiler versions. diff --git a/example/lib/main_area/window_manipulator_demo/command_list/description_box.dart b/example/lib/main_area/window_manipulator_demo/command_list/description_box.dart index e255b97..8fe3b20 100644 --- a/example/lib/main_area/window_manipulator_demo/command_list/description_box.dart +++ b/example/lib/main_area/window_manipulator_demo/command_list/description_box.dart @@ -27,7 +27,7 @@ class DescriptionBox extends StatelessWidget { child: Text( 'This command has no description.', textAlign: TextAlign.center, - textScaleFactor: 0.8, + textScaler: TextScaler.linear(0.8), style: TextStyle( fontStyle: FontStyle.italic, ), diff --git a/example/lib/main_area/window_manipulator_demo/command_list_provider/command_list_provider.dart b/example/lib/main_area/window_manipulator_demo/command_list_provider/command_list_provider.dart index b56d62a..6e300fa 100644 --- a/example/lib/main_area/window_manipulator_demo/command_list_provider/command_list_provider.dart +++ b/example/lib/main_area/window_manipulator_demo/command_list_provider/command_list_provider.dart @@ -1,8 +1,6 @@ import 'dart:async'; -import 'dart:ui'; import 'package:example/main_area/window_manipulator_demo/command_list_provider/command_list_provider_constants.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:macos_window_utils/macos/ns_window_button_type.dart'; import 'package:macos_window_utils/macos/ns_window_level.dart'; diff --git a/example/lib/toolbar_passthrough_demo/tab_example.dart b/example/lib/toolbar_passthrough_demo/tab_example.dart index 5e2eada..591ddea 100644 --- a/example/lib/toolbar_passthrough_demo/tab_example.dart +++ b/example/lib/toolbar_passthrough_demo/tab_example.dart @@ -4,7 +4,6 @@ import 'package:example/global_state.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; -import 'package:flutter/widgets.dart'; import 'package:macos_window_utils/macos_window_utils.dart'; import 'package:macos_window_utils/widgets/macos_toolbar_passthrough.dart'; diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 5042c5b..70adbab 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -2,26 +2,20 @@ PODS: - appkit_ui_element_colors (1.0.0): - FlutterMacOS - FlutterMacOS (1.0.0) - - macos_window_utils (1.0.0): - - FlutterMacOS DEPENDENCIES: - appkit_ui_element_colors (from `Flutter/ephemeral/.symlinks/plugins/appkit_ui_element_colors/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - - macos_window_utils (from `Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos`) EXTERNAL SOURCES: appkit_ui_element_colors: :path: Flutter/ephemeral/.symlinks/plugins/appkit_ui_element_colors/macos FlutterMacOS: :path: Flutter/ephemeral - macos_window_utils: - :path: Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos SPEC CHECKSUMS: appkit_ui_element_colors: 711e7a2aa027790964e6fd90c78a666efe631432 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - macos_window_utils: 3bca8603c2a1cf2257351dfe6bbccc9accf739fd PODFILE CHECKSUM: 500e4707112a5f11963bc198135953cdebb6d50c diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 12c4c31..8d12a0b 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; FAE3DC00BDFD51D7C70C8495 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6BA76D28627105B3BD31E6F /* Pods_Runner.framework */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -80,6 +81,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, FAE3DC00BDFD51D7C70C8495 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -174,6 +176,9 @@ /* Begin PBXNativeTarget section */ 33CC10EC2044A3C60003C045 /* Runner */ = { + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( @@ -199,6 +204,9 @@ /* Begin PBXProject section */ 33CC10E52044A3C60003C045 /* Project object */ = { + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; @@ -633,6 +641,18 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 33CC10E52044A3C60003C045 /* Project object */; } diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 5b055a3..8b5a3a2 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + diff --git a/lib/toolbars/toolbars.dart b/lib/toolbars/toolbars.dart index 83d79a5..c4bca35 100644 --- a/lib/toolbars/toolbars.dart +++ b/lib/toolbars/toolbars.dart @@ -37,7 +37,7 @@ class BlockingToolbar extends Toolbar { return { "blockingAreaDebugColor": blockingAreaDebugColor == null ? "" - : "${blockingAreaDebugColor!.red},${blockingAreaDebugColor!.green},${blockingAreaDebugColor!.blue},${blockingAreaDebugColor!.alpha}", + : "${blockingAreaDebugColor!.r},${blockingAreaDebugColor!.g},${blockingAreaDebugColor!.b},${blockingAreaDebugColor!.a}", }; } } diff --git a/lib/widgets/macos_toolbar_passthrough.dart b/lib/widgets/macos_toolbar_passthrough.dart index 525ff94..928448d 100644 --- a/lib/widgets/macos_toolbar_passthrough.dart +++ b/lib/widgets/macos_toolbar_passthrough.dart @@ -19,7 +19,6 @@ import 'dart:collection'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:flutter/services.dart'; import 'package:macos_window_utils/window_manipulator.dart'; const _debounceDuration = Duration(milliseconds: 10); diff --git a/lib/window_manipulator.dart b/lib/window_manipulator.dart index f62059d..5b829fc 100644 --- a/lib/window_manipulator.dart +++ b/lib/window_manipulator.dart @@ -842,7 +842,15 @@ class WindowManipulator { await _windowManipulatorMethodChannel.invokeMethod('performClose'); } - // TODO: document this + /// Updates the toolbar passthrough view with the specified parameters. + /// + /// The [id] parameter uniquely identifies the passthrough view. + /// The [x] and [y] parameters specify the position of the view. + /// The [width] and [height] parameters define the size of the view. + /// The [enableDebugLayers] parameter enables visual debugging layers if set + /// to true. Note that [enableDebugLayers] is meant to stay constant during + /// life lifetime of the app. Changing its state during runtime may lead to + /// unexpected behavior. static Future updateToolbarPassthroughView({ required String id, required double x, @@ -865,7 +873,7 @@ class WindowManipulator { ); } - // TODO: document this + /// Removes the toolbar passthrough view with the specified [id]. static Future removeToolbarPassthroughView({required String id}) async { await _completer.future; await _windowManipulatorMethodChannel.invokeMethod( diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index cccf817..0000000 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,10 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { -} diff --git a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig deleted file mode 100644 index 60382d4..0000000 --- a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -// This is a generated file; do not edit or check into version control. -FLUTTER_ROOT=/Users/adriansamoticha/flutter/flutter -FLUTTER_APPLICATION_PATH=/Users/adriansamoticha/Documents/projects/macos_window_utils/macos_window_utils -COCOAPODS_PARALLEL_CODE_SIGN=true -FLUTTER_BUILD_DIR=build -FLUTTER_BUILD_NAME=0.0.1 -FLUTTER_BUILD_NUMBER=0.0.1 -DART_OBFUSCATION=false -TRACK_WIDGET_CREATION=true -TREE_SHAKE_ICONS=false -PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/macos/Flutter/ephemeral/flutter_export_environment.sh b/macos/Flutter/ephemeral/flutter_export_environment.sh deleted file mode 100755 index 23289e9..0000000 --- a/macos/Flutter/ephemeral/flutter_export_environment.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# This is a generated file; do not edit or check into version control. -export "FLUTTER_ROOT=/Users/adriansamoticha/flutter/flutter" -export "FLUTTER_APPLICATION_PATH=/Users/adriansamoticha/Documents/projects/macos_window_utils/macos_window_utils" -export "COCOAPODS_PARALLEL_CODE_SIGN=true" -export "FLUTTER_BUILD_DIR=build" -export "FLUTTER_BUILD_NAME=0.0.1" -export "FLUTTER_BUILD_NUMBER=0.0.1" -export "DART_OBFUSCATION=false" -export "TRACK_WIDGET_CREATION=true" -export "TREE_SHAKE_ICONS=false" -export "PACKAGE_CONFIG=.dart_tool/package_config.json" diff --git a/macos/macos_window_utils.podspec b/macos/macos_window_utils.podspec index b2d1ca5..a759c0a 100644 --- a/macos/macos_window_utils.podspec +++ b/macos/macos_window_utils.podspec @@ -17,7 +17,8 @@ Pod::Spec.new do |s| s.author = { 'Adrian Samoticha' => 'adrian@samoticha.de' } s.source = { :git => 'https://github.com/Adrian-Samoticha/macos_window_utils.dart.git', :tag => s.version.to_s } - s.source_files = 'Classes/**/*' + s.source_files = 'macos_window_utils/Sources/macos_window_utils/**/*.swift' + s.resource_bundles = {'macos_window_utils_privacy' => ['macos_window_utils/Sources/macos_window_utils/Resources/PrivacyInfo.xcprivacy']} s.dependency 'FlutterMacOS' s.platform = :osx, '10.14.6' diff --git a/macos/macos_window_utils/Package.swift b/macos/macos_window_utils/Package.swift new file mode 100644 index 0000000..1682727 --- /dev/null +++ b/macos/macos_window_utils/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "macos_window_utils", + platforms: [ + .macOS("10.14") + ], + products: [ + .library(name: "macos-window-utils", targets: ["macos_window_utils"]) + ], + dependencies: [], + targets: [ + .target( + name: "macos_window_utils", + dependencies: [], + resources: [ + .process("Resources") + ] + ) + ] +) \ No newline at end of file diff --git a/macos/Classes/BlockingToolbar.swift b/macos/macos_window_utils/Sources/macos_window_utils/BlockingToolbar.swift similarity index 100% rename from macos/Classes/BlockingToolbar.swift rename to macos/macos_window_utils/Sources/macos_window_utils/BlockingToolbar.swift diff --git a/macos/Classes/ButtonTypeNameToButtonTypeConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/ButtonTypeNameToButtonTypeConverter.swift similarity index 98% rename from macos/Classes/ButtonTypeNameToButtonTypeConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/ButtonTypeNameToButtonTypeConverter.swift index 63232ba..21086a6 100644 --- a/macos/Classes/ButtonTypeNameToButtonTypeConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/ButtonTypeNameToButtonTypeConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit class ButtonTypeNameToButtonTypeConverter { public static func getButtonTypeFromName(name: String) -> NSWindow.ButtonType? { diff --git a/macos/Classes/FlutterWindowDelegate.swift b/macos/macos_window_utils/Sources/macos_window_utils/FlutterWindowDelegate.swift similarity index 100% rename from macos/Classes/FlutterWindowDelegate.swift rename to macos/macos_window_utils/Sources/macos_window_utils/FlutterWindowDelegate.swift diff --git a/macos/Classes/LevelNameToLevelConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/LevelNameToLevelConverter.swift similarity index 98% rename from macos/Classes/LevelNameToLevelConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/LevelNameToLevelConverter.swift index 49e0d8c..304a6ec 100644 --- a/macos/Classes/LevelNameToLevelConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/LevelNameToLevelConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit class LevelNameToLevelConverter { public static func getLevelFromName(_ name: String) -> NSWindow.Level { diff --git a/macos/Classes/MacOSWindowUtilsPlugin.swift b/macos/macos_window_utils/Sources/macos_window_utils/MacOSWindowUtilsPlugin.swift similarity index 100% rename from macos/Classes/MacOSWindowUtilsPlugin.swift rename to macos/macos_window_utils/Sources/macos_window_utils/MacOSWindowUtilsPlugin.swift diff --git a/macos/Classes/MacOSWindowUtilsViewController.swift b/macos/macos_window_utils/Sources/macos_window_utils/MacOSWindowUtilsViewController.swift similarity index 100% rename from macos/Classes/MacOSWindowUtilsViewController.swift rename to macos/macos_window_utils/Sources/macos_window_utils/MacOSWindowUtilsViewController.swift diff --git a/macos/Classes/MainFlutterWindowManipulator.swift b/macos/macos_window_utils/Sources/macos_window_utils/MainFlutterWindowManipulator.swift similarity index 100% rename from macos/Classes/MainFlutterWindowManipulator.swift rename to macos/macos_window_utils/Sources/macos_window_utils/MainFlutterWindowManipulator.swift diff --git a/macos/Classes/MaterialIDToMaterialConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/MaterialIDToMaterialConverter.swift similarity index 99% rename from macos/Classes/MaterialIDToMaterialConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/MaterialIDToMaterialConverter.swift index f3758ec..12aa219 100644 --- a/macos/Classes/MaterialIDToMaterialConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/MaterialIDToMaterialConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit public class MaterialIDToMaterialConverter { @available(macOS 10.14, *) diff --git a/macos/Classes/PassthroughViewHandler.swift b/macos/macos_window_utils/Sources/macos_window_utils/PassthroughViewHandler.swift similarity index 100% rename from macos/Classes/PassthroughViewHandler.swift rename to macos/macos_window_utils/Sources/macos_window_utils/PassthroughViewHandler.swift diff --git a/macos/Classes/PresentationOptionNameToPresentationOptionsConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/PresentationOptionNameToPresentationOptionsConverter.swift similarity index 99% rename from macos/Classes/PresentationOptionNameToPresentationOptionsConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/PresentationOptionNameToPresentationOptionsConverter.swift index 324cd0b..d967d28 100644 --- a/macos/Classes/PresentationOptionNameToPresentationOptionsConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/PresentationOptionNameToPresentationOptionsConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit class PresentationOptionNameToPresentationOptionsConverter { public static func getPresentationOptionsFromName(name: String) -> NSApplication.PresentationOptions? { diff --git a/macos/macos_window_utils/Sources/macos_window_utils/Resources/PrivacyInfo.xcprivacy b/macos/macos_window_utils/Sources/macos_window_utils/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..c88e30f --- /dev/null +++ b/macos/macos_window_utils/Sources/macos_window_utils/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,12 @@ + + + + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + \ No newline at end of file diff --git a/macos/Classes/StyleMaskNameToStyleMaskConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/StyleMaskNameToStyleMaskConverter.swift similarity index 98% rename from macos/Classes/StyleMaskNameToStyleMaskConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/StyleMaskNameToStyleMaskConverter.swift index 8a67ea7..1899636 100644 --- a/macos/Classes/StyleMaskNameToStyleMaskConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/StyleMaskNameToStyleMaskConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit class StyleMaskNameToStyleMaskConverter { public static func getStyleMaskFromName(_ name: String) -> NSWindow.StyleMask { diff --git a/macos/Classes/ToolbarStyleNameToEnumConverter.swift b/macos/macos_window_utils/Sources/macos_window_utils/ToolbarStyleNameToEnumConverter.swift similarity index 98% rename from macos/Classes/ToolbarStyleNameToEnumConverter.swift rename to macos/macos_window_utils/Sources/macos_window_utils/ToolbarStyleNameToEnumConverter.swift index 75086f0..3e83c13 100644 --- a/macos/Classes/ToolbarStyleNameToEnumConverter.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/ToolbarStyleNameToEnumConverter.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit class ToolbarStyleNameToEnumConverter { @available(macOS 11.0, *) diff --git a/macos/Classes/VisualEffectSubview.swift b/macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubview.swift similarity index 95% rename from macos/Classes/VisualEffectSubview.swift rename to macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubview.swift index 52b311c..28a0e87 100644 --- a/macos/Classes/VisualEffectSubview.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubview.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit public class VisualEffectSubview: NSVisualEffectView { public override func hitTest(_ point: NSPoint) -> NSView? { diff --git a/macos/Classes/VisualEffectSubviewProperties.swift b/macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubviewProperties.swift similarity index 99% rename from macos/Classes/VisualEffectSubviewProperties.swift rename to macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubviewProperties.swift index 800795c..4dcf03f 100644 --- a/macos/Classes/VisualEffectSubviewProperties.swift +++ b/macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubviewProperties.swift @@ -6,6 +6,7 @@ // import Foundation +import AppKit /// This class holds properties that can be applied to a VisualEffectSubview. @available(macOS 10.14, *) diff --git a/macos/Classes/VisualEffectSubviewRegistry.swift b/macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubviewRegistry.swift similarity index 100% rename from macos/Classes/VisualEffectSubviewRegistry.swift rename to macos/macos_window_utils/Sources/macos_window_utils/VisualEffectSubviewRegistry.swift diff --git a/macos/Classes/colorFromRGBAString.swift b/macos/macos_window_utils/Sources/macos_window_utils/colorFromRGBAString.swift similarity index 100% rename from macos/Classes/colorFromRGBAString.swift rename to macos/macos_window_utils/Sources/macos_window_utils/colorFromRGBAString.swift diff --git a/pubspec.yaml b/pubspec.yaml index 3ac2899..ad9f135 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: macos_window_utils description: macos_window_utils is a Flutter package that provides a set of methods for modifying the NSWindow of a Flutter application on macOS. -version: 1.8.1 +version: 1.8.2 repository: https://github.com/Adrian-Samoticha/macos_window_utils.dart environment: