From fd98b192afbc18f8d3ae5d4373c9858b1ae54334 Mon Sep 17 00:00:00 2001 From: Harinandan Date: Wed, 19 Jan 2022 14:11:33 +0530 Subject: [PATCH] Added adaptive theme and change theme button --- .../settings/settings_dialog.dart | 3 + .../widgets/settings_appearance_view.dart | 60 +++++++++---------- .../widgets/settings_menu_element.dart | 7 ++- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/frontend/app_flowy/lib/workspace/presentation/settings/settings_dialog.dart b/frontend/app_flowy/lib/workspace/presentation/settings/settings_dialog.dart index a75c410b26..a9f88fc4c9 100644 --- a/frontend/app_flowy/lib/workspace/presentation/settings/settings_dialog.dart +++ b/frontend/app_flowy/lib/workspace/presentation/settings/settings_dialog.dart @@ -33,6 +33,7 @@ class _SettingsDialogState extends State { const SettingsPanelHeader(), Expanded( child: Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, @@ -45,6 +46,8 @@ class _SettingsDialogState extends State { currentIndex: _selectedViewIndex, ), ), + const VerticalDivider(), + const SizedBox(width: 10), Expanded( flex: 4, child: settingsViews[_selectedViewIndex], diff --git a/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart b/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart index af66182d2a..139451fe47 100644 --- a/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart +++ b/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart @@ -1,9 +1,7 @@ +import 'package:app_flowy/workspace/presentation/theme/theme_model.dart'; import 'package:flowy_infra/theme.dart'; import 'package:flutter/material.dart'; -import 'package:easy_localization/easy_localization.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:app_flowy/workspace/presentation/theme/theme_model.dart'; -import 'package:app_flowy/generated/locale_keys.g.dart'; class SettingsAppearanceView extends StatelessWidget { const SettingsAppearanceView({Key? key}) : super(key: key); @@ -14,37 +12,37 @@ class SettingsAppearanceView extends StatelessWidget { return SingleChildScrollView( child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - (theme.isDark ? _renderLightMode(context) : _renderDarkMode(context)), + const SizedBox( + height: 15, + ), + Row( + children: [ + const Text( + 'Light Mode', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + Switch( + value: theme.isDark, + onChanged: (val) { + context.read().swapTheme(); + }, + ), + const Text( + 'Dark Mode', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + ], + ), ], ), ); } - - Widget _renderThemeToggle(BuildContext context) { - final theme = context.watch(); - return CircleAvatar( - backgroundColor: theme.surface, - child: IconButton( - icon: Icon(theme.isDark ? Icons.dark_mode : Icons.light_mode), - color: (theme.iconColor), - onPressed: () { - context.read().swapTheme(); - }), - ); - } - - Widget _renderDarkMode(BuildContext context) { - return Tooltip( - message: LocaleKeys.tooltip_darkMode.tr(), - child: _renderThemeToggle(context), - ); - } - - Widget _renderLightMode(BuildContext context) { - return Tooltip( - message: LocaleKeys.tooltip_lightMode.tr(), - child: _renderThemeToggle(context), - ); - } } diff --git a/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_menu_element.dart b/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_menu_element.dart index adfe45010e..6127ea96ae 100644 --- a/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_menu_element.dart +++ b/frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_menu_element.dart @@ -1,3 +1,5 @@ +import 'package:flowy_infra/theme.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter/material.dart'; class SettingsMenuElement extends StatelessWidget { @@ -18,18 +20,19 @@ class SettingsMenuElement extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = context.watch(); return ListTile( leading: Icon( icon, size: 16, - color: Colors.black, + color: index == currentIndex ? Colors.black : theme.textColor, ), onTap: () { changeSelectedIndex(index); }, selected: index == currentIndex, selectedColor: Colors.black, - selectedTileColor: Colors.blue.shade700, + selectedTileColor: theme.main2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(5), ),