feature: HTPC mode startup argument (#358)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2025-06-01 15:30:34 +02:00 committed by GitHub
parent a8795cf0c9
commit 69a5e3db7a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 416 additions and 151 deletions

View file

@ -3,7 +3,9 @@ import 'package:flutter/material.dart';
import 'package:auto_route/auto_route.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:iconsax_plus/iconsax_plus.dart';
import 'package:window_manager/window_manager.dart';
import 'package:fladder/providers/arguments_provider.dart';
import 'package:fladder/providers/auth_provider.dart';
import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/routes/auto_router.gr.dart';
@ -11,6 +13,7 @@ import 'package:fladder/screens/settings/quick_connect_window.dart';
import 'package:fladder/screens/settings/settings_list_tile.dart';
import 'package:fladder/screens/settings/settings_scaffold.dart';
import 'package:fladder/screens/shared/fladder_icon.dart';
import 'package:fladder/screens/shared/fladder_snackbar.dart';
import 'package:fladder/util/adaptive_layout/adaptive_layout.dart';
import 'package:fladder/util/localization_helper.dart';
import 'package:fladder/util/theme_extensions.dart';
@ -137,7 +140,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
label: Text(context.localized.about),
subLabel: const Text("Fladder"),
selected: containsRoute(const AboutSettingsRoute()),
suffix: Opacity(
leading: Opacity(
opacity: 1,
child: FladderIconOutlined(
size: 24,
@ -146,6 +149,20 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
),
onTap: () => navigateTo(const AboutSettingsRoute()),
),
if (ref.watch(argumentsStateProvider.select((value) => value.htpcMode))) ...[
SettingsListTile(
label: Text(context.localized.exitFladderTitle),
icon: IconsaxPlusLinear.close_square,
onTap: () async {
final manager = WindowManager.instance;
if (await manager.isClosable()) {
manager.close();
} else {
fladderSnackbar(context, title: context.localized.somethingWentWrong);
}
},
),
],
],
floatingActionButton: Padding(
padding: EdgeInsets.symmetric(horizontal: MediaQuery.paddingOf(context).horizontal),