diff --git a/packages/tray_manager_macos/.gitignore b/packages/tray_manager_macos/.gitignore new file mode 100644 index 0000000..ac5aa98 --- /dev/null +++ b/packages/tray_manager_macos/.gitignore @@ -0,0 +1,29 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +build/ diff --git a/packages/tray_manager_macos/.metadata b/packages/tray_manager_macos/.metadata new file mode 100644 index 0000000..b2763f6 --- /dev/null +++ b/packages/tray_manager_macos/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "2663184aa79047d0a33a14a3b607954f8fdd8730" + channel: "stable" + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 + base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 + - platform: macos + create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 + base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/tray_manager_macos/CHANGELOG.md b/packages/tray_manager_macos/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/packages/tray_manager_macos/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/tray_manager_macos/LICENSE b/packages/tray_manager_macos/LICENSE new file mode 100644 index 0000000..ba75c69 --- /dev/null +++ b/packages/tray_manager_macos/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/packages/tray_manager_macos/README.md b/packages/tray_manager_macos/README.md new file mode 100644 index 0000000..1d2c2af --- /dev/null +++ b/packages/tray_manager_macos/README.md @@ -0,0 +1,15 @@ +# tray_manager_macos + +A new Flutter plugin project. + +## Getting Started + +This project is a starting point for a Flutter +[plug-in package](https://flutter.dev/to/develop-plugins), +a specialized package that includes platform-specific implementation code for +Android and/or iOS. + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev), which offers tutorials, +samples, guidance on mobile development, and a full API reference. + diff --git a/packages/tray_manager_macos/analysis_options.yaml b/packages/tray_manager_macos/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/packages/tray_manager_macos/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/tray_manager_macos/lib/tray_manager_macos.dart b/packages/tray_manager_macos/lib/tray_manager_macos.dart new file mode 100644 index 0000000..19d296d --- /dev/null +++ b/packages/tray_manager_macos/lib/tray_manager_macos.dart @@ -0,0 +1,8 @@ + +import 'tray_manager_macos_platform_interface.dart'; + +class TrayManagerMacos { + Future getPlatformVersion() { + return TrayManagerMacosPlatform.instance.getPlatformVersion(); + } +} diff --git a/packages/tray_manager_macos/lib/tray_manager_macos_method_channel.dart b/packages/tray_manager_macos/lib/tray_manager_macos_method_channel.dart new file mode 100644 index 0000000..0e9079e --- /dev/null +++ b/packages/tray_manager_macos/lib/tray_manager_macos_method_channel.dart @@ -0,0 +1,17 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +import 'tray_manager_macos_platform_interface.dart'; + +/// An implementation of [TrayManagerMacosPlatform] that uses method channels. +class MethodChannelTrayManagerMacos extends TrayManagerMacosPlatform { + /// The method channel used to interact with the native platform. + @visibleForTesting + final methodChannel = const MethodChannel('tray_manager_macos'); + + @override + Future getPlatformVersion() async { + final version = await methodChannel.invokeMethod('getPlatformVersion'); + return version; + } +} diff --git a/packages/tray_manager_macos/lib/tray_manager_macos_platform_interface.dart b/packages/tray_manager_macos/lib/tray_manager_macos_platform_interface.dart new file mode 100644 index 0000000..6d807cd --- /dev/null +++ b/packages/tray_manager_macos/lib/tray_manager_macos_platform_interface.dart @@ -0,0 +1,29 @@ +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'tray_manager_macos_method_channel.dart'; + +abstract class TrayManagerMacosPlatform extends PlatformInterface { + /// Constructs a TrayManagerMacosPlatform. + TrayManagerMacosPlatform() : super(token: _token); + + static final Object _token = Object(); + + static TrayManagerMacosPlatform _instance = MethodChannelTrayManagerMacos(); + + /// The default instance of [TrayManagerMacosPlatform] to use. + /// + /// Defaults to [MethodChannelTrayManagerMacos]. + static TrayManagerMacosPlatform get instance => _instance; + + /// Platform-specific implementations should set this with their own + /// platform-specific class that extends [TrayManagerMacosPlatform] when + /// they register themselves. + static set instance(TrayManagerMacosPlatform instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + Future getPlatformVersion() { + throw UnimplementedError('platformVersion() has not been implemented.'); + } +} diff --git a/packages/tray_manager_macos/macos/Classes/TrayManagerMacosPlugin.swift b/packages/tray_manager_macos/macos/Classes/TrayManagerMacosPlugin.swift new file mode 100644 index 0000000..134ce2f --- /dev/null +++ b/packages/tray_manager_macos/macos/Classes/TrayManagerMacosPlugin.swift @@ -0,0 +1,19 @@ +import Cocoa +import FlutterMacOS + +public class TrayManagerMacosPlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel(name: "tray_manager_macos", binaryMessenger: registrar.messenger) + let instance = TrayManagerMacosPlugin() + registrar.addMethodCallDelegate(instance, channel: channel) + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + switch call.method { + case "getPlatformVersion": + result("macOS " + ProcessInfo.processInfo.operatingSystemVersionString) + default: + result(FlutterMethodNotImplemented) + } + } +} diff --git a/packages/tray_manager_macos/macos/tray_manager_macos.podspec b/packages/tray_manager_macos/macos/tray_manager_macos.podspec new file mode 100644 index 0000000..a05d6c9 --- /dev/null +++ b/packages/tray_manager_macos/macos/tray_manager_macos.podspec @@ -0,0 +1,23 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint tray_manager_macos.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'tray_manager_macos' + s.version = '0.0.1' + s.summary = 'A new Flutter plugin project.' + s.description = <<-DESC +A new Flutter plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'FlutterMacOS' + + s.platform = :osx, '10.11' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.swift_version = '5.0' +end diff --git a/packages/tray_manager_macos/pubspec.yaml b/packages/tray_manager_macos/pubspec.yaml new file mode 100644 index 0000000..08f73a6 --- /dev/null +++ b/packages/tray_manager_macos/pubspec.yaml @@ -0,0 +1,69 @@ +name: tray_manager_macos +description: "A new Flutter plugin project." +version: 0.0.1 +homepage: + +environment: + sdk: ^3.5.3 + flutter: '>=3.3.0' + +dependencies: + flutter: + sdk: flutter + plugin_platform_interface: ^2.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^4.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # This section identifies this Flutter project as a plugin project. + # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) + # which should be registered in the plugin registry. This is required for + # using method channels. + # The Android 'package' specifies package in which the registered class is. + # This is required for using method channels on Android. + # The 'ffiPlugin' specifies that native code should be built and bundled. + # This is required for using `dart:ffi`. + # All these are used by the tooling to maintain consistency when + # adding or updating assets for this project. + plugin: + platforms: + macos: + pluginClass: TrayManagerMacosPlugin + + # To add assets to your plugin package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/to/asset-from-package + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # To add custom fonts to your plugin package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/to/font-from-package