window.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import 'package:get/get.dart';
  2. import 'package:naiyouwl/app/controller/controllers.dart';
  3. import 'package:window_manager/window_manager.dart';
  4. class WindowController extends GetxController with WindowListener {
  5. /// focus blur minimize maximize unmaximize restore resized close move moved...
  6. var event = ''.obs;
  7. var isVisible = false.obs;
  8. void initWindow() async {
  9. windowManager.addListener(this);
  10. isVisible.value = await windowManager.isVisible();
  11. }
  12. @override
  13. void onWindowClose() async {
  14. await windowManager.hide();
  15. }
  16. @override
  17. void onWindowEvent(String eventName) async {
  18. if (controllers.tray.show.value) return;
  19. event.value = eventName;
  20. if (['focus', 'restore'].contains(eventName)) {
  21. isVisible.value = true;
  22. } else if (['close', 'minimize'].contains(eventName)) {
  23. isVisible.value = false;
  24. }
  25. }
  26. Future<void> closeWindow() async {
  27. await windowManager.close();
  28. }
  29. Future<void> hideWindow() async {
  30. await windowManager.hide();
  31. isVisible.value = false;
  32. }
  33. Future<void> showWindow() async {
  34. await windowManager.show();
  35. isVisible.value = true;
  36. }
  37. @override
  38. void dispose() {
  39. windowManager.removeListener(this);
  40. super.dispose();
  41. }
  42. }