application_task.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import 'package:app_flowy/startup/startup.dart';
  2. import 'package:flowy_infra/theme.dart';
  3. import 'package:flowy_infra_ui/flowy_infra_ui.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:provider/provider.dart';
  6. import 'package:window_size/window_size.dart';
  7. import 'package:app_flowy/startup/launch.dart';
  8. class AppWidgetTask extends LaunchTask {
  9. @override
  10. LaunchTaskType get type => LaunchTaskType.appLauncher;
  11. @override
  12. Future<void> initialize(LaunchContext context) {
  13. final widget = context.getIt<EntryPoint>().create();
  14. final app = ApplicationWidget(child: widget);
  15. runApp(app);
  16. return Future(() => {});
  17. }
  18. }
  19. class ApplicationWidget extends StatelessWidget {
  20. final Widget child;
  21. const ApplicationWidget({
  22. Key? key,
  23. required this.child,
  24. }) : super(key: key);
  25. @override
  26. Widget build(BuildContext context) {
  27. const ratio = 1.73;
  28. setWindowMinSize(const Size(500, 500 / ratio));
  29. setWindowFrame(const Rect.fromLTRB(0, 0, 1310, 1310 / ratio));
  30. final theme = AppTheme.fromType(ThemeType.light);
  31. return Provider.value(
  32. value: theme,
  33. child: MaterialApp(
  34. builder: overlayManagerBuilder(),
  35. debugShowCheckedModeBanner: false,
  36. theme: theme.themeData,
  37. navigatorKey: AppGlobals.rootNavKey,
  38. home: child,
  39. ));
  40. }
  41. }
  42. class AppGlobals {
  43. static GlobalKey<NavigatorState> rootNavKey = GlobalKey();
  44. static NavigatorState get nav => rootNavKey.currentState!;
  45. }