From 453774e97b4aae1231e3ff55b9adfd2c642a3a3f Mon Sep 17 00:00:00 2001 From: Armand <4831c0@proton.me> Date: Wed, 3 Sep 2025 20:36:39 +0200 Subject: [PATCH] update settings screen add back arrow for iOS users (I love cupertino) add header to customization screen --- firka/lib/helpers/settings/setting.dart | 54 +++++++++++++++---- firka/lib/l10n | 2 +- .../screens/settings/settings_screen.dart | 33 ++++++++++++ 3 files changed, 78 insertions(+), 11 deletions(-) diff --git a/firka/lib/helpers/settings/setting.dart b/firka/lib/helpers/settings/setting.dart index 89e80a2..eb4f3df 100644 --- a/firka/lib/helpers/settings/setting.dart +++ b/firka/lib/helpers/settings/setting.dart @@ -64,6 +64,7 @@ class SettingsStore { items["settings"] = SettingsGroup( 0, LinkedHashMap.of({ + "back": SettingsBackHeader(0, l10n.s_a, always), "settings_header": SettingsHeader(0, l10n.s_settings, always), "settings_padding": SettingsPadding(0, 20, always), "application": SettingsSubGroup( @@ -72,10 +73,9 @@ class SettingsStore { Majesticon.settingsCogSolid, l10n.s_a, LinkedHashMap.of({ - // TODO: Make a back arrow widget + "back": SettingsBackHeader(0, l10n.s_settings, always), "settings_header": SettingsHeader(0, l10n.s_ag, always), "settings_padding": SettingsPadding(0, 23, always), - "bell_delay": SettingsDouble( bellRing, FirkaIconType.majesticons, @@ -154,6 +154,9 @@ class SettingsStore { Majesticon.flower2Solid, l10n.s_c, LinkedHashMap.of({ + "back": SettingsBackHeader(0, l10n.s_settings, always), + "settings_header": + SettingsHeader(0, l10n.s_customization, always), "icon_header": SettingsHeaderSmall(0, l10n.s_c_icon_header, always), "icon_preview": SettingsAppIconPreview(0, always), @@ -234,23 +237,32 @@ class SettingsStore { isAndroid), }), always), - "notifications": SettingsSubGroup(0, FirkaIconType.majesticons, - Majesticon.bellSolid, "Értesítések", LinkedHashMap.of({}), never), + "notifications": SettingsSubGroup( + 0, + FirkaIconType.majesticons, + Majesticon.bellSolid, + "Értesítések", + LinkedHashMap.of({ + "back": SettingsBackHeader(0, l10n.s_settings, always), + }), + never), "extras": SettingsSubGroup( 0, FirkaIconType.majesticons, Majesticon.lightningBoltSolid, "Extrák", - LinkedHashMap.of({}), + LinkedHashMap.of({ + "back": SettingsBackHeader(0, l10n.s_settings, always), + }), never), "settings_other_padding": SettingsPadding(0, 20, never), "settings_other_header": SettingsHeaderSmall(0, "Egyéb", never), - "developer": SettingsSubGroup( - 0, - FirkaIconType.majesticonsLocal, - "wrenchSolid", - 'Developer', + "developer": SettingsSubGroup( + 0, + FirkaIconType.majesticonsLocal, + "wrenchSolid", + 'Developer', LinkedHashMap.of({ "stats_for_nerds": SettingsBoolean( statsForNerds, @@ -510,6 +522,28 @@ class SettingsPadding implements SettingsItem { Future save(IsarCollection model) async {} } +class SettingsBackHeader implements SettingsItem { + @override + Id key; + @override + FirkaIconType? iconType; + @override + Object? iconData; + @override + bool Function() visibilityProvider; + @override + Future Function() postUpdate = () async {}; + String title; + + SettingsBackHeader(this.key, this.title, this.visibilityProvider); + + @override + Future load(IsarCollection model) async {} + + @override + Future save(IsarCollection model) async {} +} + class SettingsHeader implements SettingsItem { @override Id key; diff --git a/firka/lib/l10n b/firka/lib/l10n index 4557640..b98899c 160000 --- a/firka/lib/l10n +++ b/firka/lib/l10n @@ -1 +1 @@ -Subproject commit 45576403397d46c575e0aaff88ecf0d510b069ab +Subproject commit b98899c06375f7ab256da8eb911dc62f0c4268e1 diff --git a/firka/lib/ui/phone/screens/settings/settings_screen.dart b/firka/lib/ui/phone/screens/settings/settings_screen.dart index d2cfd5d..ef44c6e 100644 --- a/firka/lib/ui/phone/screens/settings/settings_screen.dart +++ b/firka/lib/ui/phone/screens/settings/settings_screen.dart @@ -9,6 +9,7 @@ import 'package:firka/ui/model/style.dart'; import 'package:firka/ui/widget/firka_icon.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:majesticons_flutter/majesticons_flutter.dart'; import '../../../../helpers/firka_bundle.dart'; import '../../../../helpers/settings/setting.dart'; @@ -74,6 +75,38 @@ class _SettingsScreenState extends State { continue; } + if (item is SettingsBackHeader) { + widgets.add(Column( + children: [ + Row( + children: [ + Transform.translate( + offset: const Offset(-4, 0), + child: GestureDetector( + child: FirkaIconWidget( + FirkaIconType.majesticons, Majesticon.chevronLeftLine, + color: appStyle.colors.textSecondary), + onTap: () { + Navigator.of(context).pop(); + }, + ), + ), + Transform.translate( + offset: const Offset(-4, 1), + child: Text( + item.title, + style: appStyle.fonts.B_16R + .apply(color: appStyle.colors.textPrimary), + ), + ) + ], + ), + SizedBox(height: 13), + ], + )); + + continue; + } if (item is SettingsHeader) { widgets.add(Text( item.title,