windows.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'dart:ui';
  2. import 'package:appflowy/core/helpers/helpers.dart';
  3. import 'package:appflowy/startup/startup.dart';
  4. import 'package:appflowy/startup/tasks/app_window_size_manager.dart';
  5. import 'package:flutter/foundation.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:window_manager/window_manager.dart';
  8. class InitAppWindowTask extends LaunchTask with WindowListener {
  9. const InitAppWindowTask({
  10. this.minimumSize = const Size(800, 600),
  11. this.title = 'AppFlowy',
  12. });
  13. final Size minimumSize;
  14. final String title;
  15. @override
  16. Future<void> initialize(LaunchContext context) async {
  17. // Don't initialize on mobile or web.
  18. if (!defaultTargetPlatform.isDesktop) {
  19. return;
  20. }
  21. await windowManager.ensureInitialized();
  22. windowManager.addListener(this);
  23. Size windowSize = await WindowSizeManager().getSize();
  24. if (context.env.isIntegrationTest()) {
  25. windowSize = const Size(1600, 1200);
  26. }
  27. final windowOptions = WindowOptions(
  28. size: windowSize,
  29. minimumSize: const Size(
  30. WindowSizeManager.minWindowWidth,
  31. WindowSizeManager.minWindowHeight,
  32. ),
  33. title: title,
  34. );
  35. windowManager.waitUntilReadyToShow(windowOptions, () async {
  36. await windowManager.show();
  37. await windowManager.focus();
  38. });
  39. }
  40. @override
  41. Future<void> onWindowResize() async {
  42. final currentWindowSize = await windowManager.getSize();
  43. WindowSizeManager().saveSize(currentWindowSize);
  44. }
  45. }