application_task.dart 1.3 KB

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