From 793884427cc54aa22c05d50cb2b29a5e38c8f1c3 Mon Sep 17 00:00:00 2001 From: MayurSMahajan Date: Wed, 5 Jul 2023 10:58:36 +0530 Subject: [PATCH] feat: toggle theme mode shortcut --- .../lib/workspace/application/appearance.dart | 8 ++++++++ .../lib/workspace/presentation/home/hotkeys.dart | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/frontend/appflowy_flutter/lib/workspace/application/appearance.dart b/frontend/appflowy_flutter/lib/workspace/application/appearance.dart index 173becca93..6a82a31df8 100644 --- a/frontend/appflowy_flutter/lib/workspace/application/appearance.dart +++ b/frontend/appflowy_flutter/lib/workspace/application/appearance.dart @@ -50,6 +50,14 @@ class AppearanceSettingsCubit extends Cubit { 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) { diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/hotkeys.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/hotkeys.dart index 25fabd3693..0ba7a76be9 100644 --- a/frontend/appflowy_flutter/lib/workspace/presentation/home/hotkeys.dart +++ b/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().toggleThemeMode(); + }, + ); return child; } }