application_widget.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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/launcher.dart';
  8. import 'package:bloc/bloc.dart';
  9. import 'package:flowy_log/flowy_log.dart';
  10. class AppWidgetTask extends LaunchTask {
  11. @override
  12. LaunchTaskType get type => LaunchTaskType.appLauncher;
  13. @override
  14. Future<void> initialize(LaunchContext context) {
  15. final widget = context.getIt<EntryPoint>().create();
  16. final app = ApplicationWidget(child: widget);
  17. Bloc.observer = ApplicationBlocObserver();
  18. runApp(app);
  19. return Future(() => {});
  20. }
  21. }
  22. class ApplicationWidget extends StatelessWidget {
  23. final Widget child;
  24. const ApplicationWidget({
  25. Key? key,
  26. required this.child,
  27. }) : super(key: key);
  28. @override
  29. Widget build(BuildContext context) {
  30. const ratio = 1.73;
  31. const minWidth = 800.0;
  32. setWindowMinSize(const Size(minWidth, minWidth / ratio));
  33. // const launchWidth = 1310.0;
  34. // setWindowFrame(const Rect.fromLTWH(0, 0, launchWidth, launchWidth / ratio));
  35. final theme = AppTheme.fromType(ThemeType.light);
  36. return Provider.value(
  37. value: theme,
  38. child: MaterialApp(
  39. builder: overlayManagerBuilder(),
  40. debugShowCheckedModeBanner: false,
  41. theme: theme.themeData,
  42. navigatorKey: AppGlobals.rootNavKey,
  43. home: child,
  44. ),
  45. );
  46. }
  47. }
  48. class AppGlobals {
  49. static GlobalKey<NavigatorState> rootNavKey = GlobalKey();
  50. static NavigatorState get nav => rootNavKey.currentState!;
  51. }
  52. class ApplicationBlocObserver extends BlocObserver {
  53. @override
  54. // ignore: unnecessary_overrides
  55. void onTransition(Bloc bloc, Transition transition) {
  56. // Log.debug("[current]: ${transition.currentState} \n\n[next]: ${transition.nextState}");
  57. //Log.debug("${transition.nextState}");
  58. super.onTransition(bloc, transition);
  59. }
  60. @override
  61. void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
  62. Log.debug(error);
  63. super.onError(bloc, error, stackTrace);
  64. }
  65. @override
  66. void onEvent(Bloc bloc, Object? event) {
  67. Log.debug("$event");
  68. super.onEvent(bloc, event);
  69. }
  70. }