Fix init params issues Fix dynamic color issues Optimize navigator animate Optimize window init Optimize fab Optimize save
55 lines
1.4 KiB
Dart
Executable File
55 lines
1.4 KiB
Dart
Executable File
import 'dart:io';
|
|
import 'dart:math';
|
|
|
|
import 'package:fl_clash/common/common.dart';
|
|
import 'package:fl_clash/models/config.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:window_manager/window_manager.dart';
|
|
import 'package:windows_single_instance/windows_single_instance.dart';
|
|
|
|
import 'protocol.dart';
|
|
import 'system.dart';
|
|
|
|
class Window {
|
|
init(WindowProps props, int version) async {
|
|
if (Platform.isWindows) {
|
|
await WindowsSingleInstance.ensureSingleInstance([], "FlClash");
|
|
protocol.register("clash");
|
|
protocol.register("clashmeta");
|
|
protocol.register("flclash");
|
|
}
|
|
await windowManager.ensureInitialized();
|
|
WindowOptions windowOptions = WindowOptions(
|
|
size: Size(props.width, props.height),
|
|
minimumSize: const Size(380, 500),
|
|
);
|
|
if (!Platform.isMacOS || version > 10) {
|
|
await windowManager.setTitleBarStyle(TitleBarStyle.hidden);
|
|
}
|
|
await windowManager.waitUntilReadyToShow(windowOptions, () async {
|
|
await windowManager.setPreventClose(true);
|
|
});
|
|
}
|
|
|
|
show() async {
|
|
await windowManager.show();
|
|
await windowManager.focus();
|
|
await windowManager.setSkipTaskbar(false);
|
|
}
|
|
|
|
Future<bool> isVisible() async {
|
|
return await windowManager.isVisible();
|
|
}
|
|
|
|
close() async {
|
|
exit(0);
|
|
}
|
|
|
|
hide() async {
|
|
await windowManager.hide();
|
|
await windowManager.setSkipTaskbar(true);
|
|
}
|
|
}
|
|
|
|
final window = system.isDesktop ? Window() : null;
|