Переглянути джерело

feat: toggle theme mode shortcut

MayurSMahajan 2 роки тому
батько
коміт
793884427c

+ 8 - 0
frontend/appflowy_flutter/lib/workspace/application/appearance.dart

@@ -50,6 +50,14 @@ class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
     emit(state.copyWith(themeMode: themeMode));
   }
 
+  /// Toggle the theme mode
+  void toggleThemeMode() {
+    final currentThemeMode = state.themeMode;
+    setThemeMode(
+      currentThemeMode == ThemeMode.light ? ThemeMode.dark : ThemeMode.light,
+    );
+  }
+
   /// Update selected font in the user's settings and emit an updated state
   /// with the font name.
   void setFontFamily(String fontFamilyName) {

+ 16 - 0
frontend/appflowy_flutter/lib/workspace/presentation/home/hotkeys.dart

@@ -1,5 +1,6 @@
 import 'dart:io';
 
+import 'package:appflowy/workspace/application/appearance.dart';
 import 'package:appflowy/workspace/application/home/home_setting_bloc.dart';
 import 'package:flutter/material.dart';
 import 'package:hotkey_manager/hotkey_manager.dart';
@@ -25,6 +26,21 @@ class HomeHotKeys extends StatelessWidget {
             .add(const HomeSettingEvent.collapseMenu());
       },
     );
+
+    final HotKey hotKeyForToggleThemeMode = HotKey(
+      KeyCode.keyL,
+      modifiers: [
+        Platform.isMacOS ? KeyModifier.meta : KeyModifier.control,
+        KeyModifier.shift,
+      ],
+      scope: HotKeyScope.inapp,
+    );
+    hotKeyManager.register(
+      hotKeyForToggleThemeMode,
+      keyDownHandler: (_) {
+        context.read<AppearanceSettingsCubit>().toggleThemeMode();
+      },
+    );
     return child;
   }
 }