Fix multi instance on windows

This commit is contained in:
problematicconsumer
2023-12-29 17:59:53 +03:30
parent 289a47c188
commit cc3c17d0e8
5 changed files with 20 additions and 0 deletions

View File

@@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:ui';
import 'package:hiddify/core/app_info/app_info_provider.dart';
@@ -7,6 +8,7 @@ import 'package:hiddify/utils/utils.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:tray_manager/tray_manager.dart';
import 'package:window_manager/window_manager.dart';
import 'package:windows_single_instance/windows_single_instance.dart';
part 'window_notifier.g.dart';
@@ -19,6 +21,11 @@ class WindowNotifier extends _$WindowNotifier with AppLogger {
Future<void> build() async {
if (!PlatformUtils.isDesktop) return;
if (Platform.isWindows) {
loggy.debug("ensuring single instance");
await WindowsSingleInstance.ensureSingleInstance([], "app.hiddify.com");
}
await windowManager.ensureInitialized();
await windowManager.setMinimumSize(minimumWindowSize);
await windowManager.setSize(defaultWindowSize);

View File

@@ -1682,6 +1682,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.3.7"
windows_single_instance:
dependency: "direct main"
description:
name: windows_single_instance
sha256: "50d5dcd6bec90b4a5ed588b1822b1aad21b39fc96da843e61c734b3caccfd2fc"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
xdg_directories:
dependency: transitive
description:

View File

@@ -71,6 +71,7 @@ dependencies:
qr_flutter: ^4.1.0
native_dio_adapter: ^1.2.0
flutter_displaymode: ^0.6.0
windows_single_instance: ^1.0.1
dev_dependencies:
flutter_test:

View File

@@ -15,6 +15,7 @@
#include <url_launcher_windows/url_launcher_windows.h>
#include <vclibs/vclibs_plugin.h>
#include <window_manager/window_manager_plugin.h>
#include <windows_single_instance/windows_single_instance_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
ProtocolHandlerPluginRegisterWithRegistrar(
@@ -35,4 +36,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("VclibsPlugin"));
WindowManagerPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("WindowManagerPlugin"));
WindowsSingleInstancePluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("WindowsSingleInstancePlugin"));
}

View File

@@ -12,6 +12,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
url_launcher_windows
vclibs
window_manager
windows_single_instance
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST