| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | import 'dart:ui';import 'package:appflowy/core/helpers/helpers.dart';import 'package:appflowy/startup/startup.dart';import 'package:appflowy/startup/tasks/app_window_size_manager.dart';import 'package:flutter/foundation.dart';import 'package:flutter/material.dart';import 'package:window_manager/window_manager.dart';class InitAppWindowTask extends LaunchTask with WindowListener {  const InitAppWindowTask({    this.minimumSize = const Size(800, 600),    this.title = 'AppFlowy',  });  final Size minimumSize;  final String title;  @override  Future<void> initialize(LaunchContext context) async {    // Don't initialize on mobile or web.    if (!defaultTargetPlatform.isDesktop || context.env.isIntegrationTest) {      return;    }    await windowManager.ensureInitialized();    windowManager.addListener(this);    final windowSize = await WindowSizeManager().getSize();    final windowOptions = WindowOptions(      size: windowSize,      minimumSize: const Size(        WindowSizeManager.minWindowWidth,        WindowSizeManager.minWindowHeight,      ),      title: title,    );    windowManager.waitUntilReadyToShow(windowOptions, () async {      await windowManager.show();      await windowManager.focus();      final position = await WindowSizeManager().getPosition();      if (position != null) {        await windowManager.setPosition(position);      }    });  }  @override  Future<void> onWindowResize() async {    super.onWindowResize();    final currentWindowSize = await windowManager.getSize();    WindowSizeManager().setSize(currentWindowSize);  }  @override  void onWindowMaximize() async {    super.onWindowMaximize();    final currentWindowSize = await windowManager.getSize();    WindowSizeManager().setSize(currentWindowSize);  }  @override  void onWindowMoved() async {    super.onWindowMoved();    final position = await windowManager.getPosition();    WindowSizeManager().setPosition(position);  }}
 |