Fladder/lib/screens/settings/client_sections/client_settings_shortcuts.dart
PartyDonut 70e346b8a2
chore: Shortcuts improvements (#446)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
2025-08-09 16:17:14 +02:00

45 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/settings/client_settings_model.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart';
import 'package:fladder/screens/settings/widgets/key_listener.dart';
import 'package:fladder/screens/settings/widgets/settings_label_divider.dart';
import 'package:fladder/screens/settings/widgets/settings_list_group.dart';
import 'package:fladder/util/localization_helper.dart';
List<Widget> buildClientSettingsShortCuts(
BuildContext context,
WidgetRef ref,
) {
final clientSettings = ref.watch(clientSettingsProvider);
return settingsListGroup(
context,
SettingsLabelDivider(label: context.localized.shortCuts),
[
...GlobalHotKeys.values.map(
(entry) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: Row(
children: [
Expanded(
child: Text(
entry.label(context),
style: Theme.of(context).textTheme.titleLarge,
),
),
Flexible(
child: KeyCombinationWidget(
currentKey: clientSettings.shortcuts[entry],
defaultKey: clientSettings.defaultShortCuts[entry]!,
onChanged: (value) => ref.read(clientSettingsProvider.notifier).setShortcuts(MapEntry(entry, value)),
),
)
],
),
),
)
],
);
}