hotkeys.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import 'dart:io';
  2. import 'package:app_flowy/startup/startup.dart';
  3. import 'package:app_flowy/workspace/application/home/home_setting_bloc.dart';
  4. import 'package:app_flowy/workspace/presentation/home/home_stack.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:hotkey_manager/hotkey_manager.dart';
  7. import 'package:provider/provider.dart';
  8. class HomeHotKeys extends StatelessWidget {
  9. final Widget child;
  10. const HomeHotKeys({required this.child, Key? key}) : super(key: key);
  11. @override
  12. Widget build(BuildContext context) {
  13. HotKey hotKey = HotKey(
  14. KeyCode.backslash,
  15. modifiers: [Platform.isMacOS ? KeyModifier.meta : KeyModifier.control],
  16. // Set hotkey scope (default is HotKeyScope.system)
  17. scope: HotKeyScope.inapp, // Set as inapp-wide hotkey.
  18. );
  19. hotKeyManager.register(
  20. hotKey,
  21. keyDownHandler: (hotKey) {
  22. context
  23. .read<HomeSettingBloc>()
  24. .add(const HomeSettingEvent.collapseMenu());
  25. getIt<HomeStackManager>().collapsedNotifier.value =
  26. !getIt<HomeStackManager>().collapsedNotifier.currentValue!;
  27. },
  28. );
  29. return child;
  30. }
  31. }