1
0
forked from firka/firka

update settings screen

add back arrow for iOS users (I love cupertino)
add header to customization screen
This commit is contained in:
2025-09-03 20:36:39 +02:00
parent ad459c13d5
commit 453774e97b
3 changed files with 78 additions and 11 deletions

View File

@@ -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<void> save(IsarCollection<AppSettingsModel> model) async {}
}
class SettingsBackHeader implements SettingsItem {
@override
Id key;
@override
FirkaIconType? iconType;
@override
Object? iconData;
@override
bool Function() visibilityProvider;
@override
Future<void> Function() postUpdate = () async {};
String title;
SettingsBackHeader(this.key, this.title, this.visibilityProvider);
@override
Future<void> load(IsarCollection<AppSettingsModel> model) async {}
@override
Future<void> save(IsarCollection<AppSettingsModel> model) async {}
}
class SettingsHeader implements SettingsItem {
@override
Id key;

View File

@@ -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<SettingsScreen> {
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,