Skip to content

Commit

Permalink
Fix bottom system ui padding in settings page
Browse files Browse the repository at this point in the history
  • Loading branch information
maelchiotti committed Feb 7, 2024
1 parent b340090 commit 4d328d5
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 124 deletions.
228 changes: 116 additions & 112 deletions lib/pages/settings/settings_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:flutter_settings_ui/flutter_settings_ui.dart';
import 'package:locale_names/locale_names.dart';
import 'package:localmaterialnotes/pages/settings/interactions.dart';
import 'package:localmaterialnotes/utils/constants/constants.dart';
import 'package:localmaterialnotes/utils/constants/paddings.dart';
import 'package:localmaterialnotes/utils/extensions/string_extension.dart';
import 'package:localmaterialnotes/utils/info_manager.dart';
import 'package:localmaterialnotes/utils/preferences/confirmations.dart';
Expand All @@ -22,120 +23,123 @@ class _SettingsPageState extends ConsumerState<SettingsPage> {

@override
Widget build(BuildContext context) {
return SettingsList(
platform: DevicePlatform.android,
lightTheme: SettingsThemeData(
settingsListBackground: Theme.of(context).colorScheme.background,
),
darkTheme: SettingsThemeData(
settingsListBackground: Theme.of(context).colorScheme.background,
),
sections: [
SettingsSection(
title: Text(localizations.settings_appearance),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.palette),
title: Text(localizations.settings_theme),
value: Text(ThemeManager().themeModeName),
onPressed: (context) async {
await interactions.selectTheme(context);
setState(() {});
},
),
if (ThemeManager().isDynamicThemingAvailable)
SettingsTile.switchTile(
leading: const Icon(Icons.bolt),
title: Text(localizations.settings_dynamic_theming),
description: Text(localizations.settings_dynamic_theming_description),
initialValue: ThemeManager().useDynamicTheming,
onToggle: interactions.toggleDynamicTheming,
),
SettingsTile.switchTile(
leading: const Icon(Icons.nightlight),
title: Text(localizations.settings_black_theming),
description: Text(localizations.settings_black_theming_description),
initialValue: ThemeManager().useBlackTheming,
onToggle: (toggled) {
interactions.toggleBlackTheming(toggled);
setState(() {});
},
),
SettingsTile.navigation(
leading: const Icon(Icons.language),
title: Text(localizations.settings_language),
value: Text(Localizations.localeOf(context).nativeDisplayLanguage.capitalized),
onPressed: interactions.selectLanguage,
),
],
),
SettingsSection(
title: Text(localizations.settings_behavior),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.warning),
title: Text(localizations.settings_confirmations),
value: Text(Confirmations.fromPreferences().title),
onPressed: (context) async {
await interactions.selectConfirmations(context);
setState(() {});
},
),
SettingsTile.navigation(
leading: const Icon(Icons.keyboard),
title: Text(localizations.settings_shortcuts),
value: Text(localizations.settings_shortcuts_description),
onPressed: interactions.showShortcuts,
),
],
return Padding(
padding: Paddings.custom.bottomSystemUi,
child: SettingsList(
platform: DevicePlatform.android,
lightTheme: SettingsThemeData(
settingsListBackground: Theme.of(context).colorScheme.background,
),
SettingsSection(
title: Text(localizations.settings_backup),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.file_download),
title: Text(localizations.settings_export),
value: Text(localizations.settings_export_description),
onPressed: interactions.backup,
),
SettingsTile.navigation(
leading: const Icon(Icons.file_upload),
title: Text(localizations.settings_import),
value: Text(localizations.settings_import_description),
onPressed: interactions.restore,
),
],
darkTheme: SettingsThemeData(
settingsListBackground: Theme.of(context).colorScheme.background,
),
SettingsSection(
title: Text(localizations.settings_about),
tiles: [
SettingsTile(
leading: const Icon(Icons.info),
title: Text(localizations.app_name),
value: Text(InfoManager().appVersion),
onPressed: interactions.showAbout,
),
SettingsTile(
leading: const Icon(SimpleIcons.github),
title: Text(localizations.settings_github),
value: Text(localizations.settings_github_description),
onPressed: interactions.openGitHub,
),
SettingsTile(
leading: const Icon(Icons.balance),
title: Text(localizations.settings_licence),
value: Text(localizations.settings_licence_description),
onPressed: interactions.openLicense,
),
SettingsTile(
leading: const Icon(Icons.bug_report),
title: Text(localizations.settings_issue),
value: Text(localizations.settings_issue_description),
onPressed: interactions.openIssues,
),
],
),
],
sections: [
SettingsSection(
title: Text(localizations.settings_appearance),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.palette),
title: Text(localizations.settings_theme),
value: Text(ThemeManager().themeModeName),
onPressed: (context) async {
await interactions.selectTheme(context);
setState(() {});
},
),
if (ThemeManager().isDynamicThemingAvailable)
SettingsTile.switchTile(
leading: const Icon(Icons.bolt),
title: Text(localizations.settings_dynamic_theming),
description: Text(localizations.settings_dynamic_theming_description),
initialValue: ThemeManager().useDynamicTheming,
onToggle: interactions.toggleDynamicTheming,
),
SettingsTile.switchTile(
leading: const Icon(Icons.nightlight),
title: Text(localizations.settings_black_theming),
description: Text(localizations.settings_black_theming_description),
initialValue: ThemeManager().useBlackTheming,
onToggle: (toggled) {
interactions.toggleBlackTheming(toggled);
setState(() {});
},
),
SettingsTile.navigation(
leading: const Icon(Icons.language),
title: Text(localizations.settings_language),
value: Text(Localizations.localeOf(context).nativeDisplayLanguage.capitalized),
onPressed: interactions.selectLanguage,
),
],
),
SettingsSection(
title: Text(localizations.settings_behavior),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.warning),
title: Text(localizations.settings_confirmations),
value: Text(Confirmations.fromPreferences().title),
onPressed: (context) async {
await interactions.selectConfirmations(context);
setState(() {});
},
),
SettingsTile.navigation(
leading: const Icon(Icons.keyboard),
title: Text(localizations.settings_shortcuts),
value: Text(localizations.settings_shortcuts_description),
onPressed: interactions.showShortcuts,
),
],
),
SettingsSection(
title: Text(localizations.settings_backup),
tiles: [
SettingsTile.navigation(
leading: const Icon(Icons.file_download),
title: Text(localizations.settings_export),
value: Text(localizations.settings_export_description),
onPressed: interactions.backup,
),
SettingsTile.navigation(
leading: const Icon(Icons.file_upload),
title: Text(localizations.settings_import),
value: Text(localizations.settings_import_description),
onPressed: interactions.restore,
),
],
),
SettingsSection(
title: Text(localizations.settings_about),
tiles: [
SettingsTile(
leading: const Icon(Icons.info),
title: Text(localizations.app_name),
value: Text(InfoManager().appVersion),
onPressed: interactions.showAbout,
),
SettingsTile(
leading: const Icon(SimpleIcons.github),
title: Text(localizations.settings_github),
value: Text(localizations.settings_github_description),
onPressed: interactions.openGitHub,
),
SettingsTile(
leading: const Icon(Icons.balance),
title: Text(localizations.settings_licence),
value: Text(localizations.settings_licence_description),
onPressed: interactions.openLicense,
),
SettingsTile(
leading: const Icon(Icons.bug_report),
title: Text(localizations.settings_issue),
value: Text(localizations.settings_issue_description),
onPressed: interactions.openIssues,
),
],
),
],
),
);
}
}
15 changes: 3 additions & 12 deletions lib/utils/constants/paddings.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:localmaterialnotes/utils/constants/constants.dart';

enum Paddings {
custom(0),
Expand Down Expand Up @@ -26,24 +27,14 @@ enum Paddings {

EdgeInsets get bottom => EdgeInsets.only(bottom: _padding);

EdgeInsets get fab => const EdgeInsets.only(bottom: kFloatingActionButtonMargin + 64);
EdgeInsets get bottomSystemUi => EdgeInsets.only(bottom: MediaQuery.of(navigatorKey.currentContext!).padding.bottom);

EdgeInsets get miniFab => const EdgeInsets.only(bottom: kFloatingActionButtonMargin + 48);
EdgeInsets get fab => const EdgeInsets.only(bottom: kFloatingActionButtonMargin + 64);

EdgeInsets get page => const EdgeInsets.all(16);

EdgeInsets get pageButBottom => const EdgeInsets.only(top: 16, left: 16, right: 16);

EdgeInsets get pageHorizontal => const EdgeInsets.symmetric(horizontal: 16);

EdgeInsets get pageVertical => const EdgeInsets.symmetric(vertical: 16);

EdgeInsets get drawer => const EdgeInsets.all(8);

EdgeInsets get editorDesktop => const EdgeInsets.all(16);

EdgeInsets get editorMobile => const EdgeInsets.all(4);

EdgeInsets get appBarActionsEnd => const EdgeInsets.only(right: 8);

final double _padding;
Expand Down

0 comments on commit 4d328d5

Please sign in to comment.