Files
Redesnigned-Finamp/lib/screens/settings_screen.dart
T
Zakaria 1563409cb1
Build / Build for Android (push) Has been cancelled
Build / Build for iOS (push) Has been cancelled
first commit
2026-05-18 14:15:38 -04:00

105 lines
4.0 KiB
Dart

import 'package:finamp/screens/interaction_settings_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:locale_names/locale_names.dart';
import 'package:package_info_plus/package_info_plus.dart';
import '../services/finamp_settings_helper.dart';
import '../services/locale_helper.dart';
import 'transcoding_settings_screen.dart';
import 'downloads_settings_screen.dart';
import 'audio_service_settings_screen.dart';
import 'layout_settings_screen.dart';
import '../components/SettingsScreen/logout_list_tile.dart';
import 'view_selector.dart';
import 'language_selection_screen.dart';
class SettingsScreen extends StatelessWidget {
const SettingsScreen({Key? key}) : super(key: key);
static const routeName = "/settings";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.settings),
actions: [
IconButton(
tooltip: AppLocalizations.of(context)!.about,
icon: const Icon(Icons.info),
onPressed: () async {
final applicationLegalese =
AppLocalizations.of(context)!.applicationLegalese;
PackageInfo packageInfo = await PackageInfo.fromPlatform();
showAboutDialog(
context: context,
applicationName: packageInfo.appName,
applicationVersion: packageInfo.version,
applicationLegalese: applicationLegalese,
);
},
)
],
),
body: Scrollbar(
child: ListView(
children: [
ListTile(
leading: const Icon(Icons.compress),
title: Text(AppLocalizations.of(context)!.transcoding),
onTap: () => Navigator.of(context)
.pushNamed(TranscodingSettingsScreen.routeName),
),
ListTile(
leading: const Icon(Icons.folder),
title: Text(AppLocalizations.of(context)!.downloadLocations),
onTap: () => Navigator.of(context)
.pushNamed(DownloadsSettingsScreen.routeName),
),
ListTile(
leading: const Icon(Icons.music_note),
title: Text(AppLocalizations.of(context)!.audioService),
onTap: () => Navigator.of(context)
.pushNamed(AudioServiceSettingsScreen.routeName),
),
ListTile(
leading: const Icon(Icons.gesture),
title: Text(AppLocalizations.of(context)!.interactions),
onTap: () => Navigator.of(context)
.pushNamed(InteractionSettingsScreen.routeName),
),
ListTile(
leading: const Icon(Icons.widgets),
title: Text(AppLocalizations.of(context)!.layoutAndTheme),
onTap: () => Navigator.of(context)
.pushNamed(LayoutSettingsScreen.routeName),
),
ListTile(
leading: const Icon(Icons.library_music),
title: Text(AppLocalizations.of(context)!.selectMusicLibraries),
subtitle: FinampSettingsHelper.finampSettings.isOffline
? Text(
AppLocalizations.of(context)!.notAvailableInOfflineMode)
: null,
enabled: !FinampSettingsHelper.finampSettings.isOffline,
onTap: () =>
Navigator.of(context).pushNamed(ViewSelector.routeName),
),
ListTile(
leading: const Icon(Icons.language),
title: Text(AppLocalizations.of(context)!.language),
subtitle: Text(LocaleHelper.locale?.nativeDisplayLanguage ??
AppLocalizations.of(context)!.system),
onTap: () => Navigator.of(context)
.pushNamed(LanguageSelectionScreen.routeName),
),
const LogoutListTile(),
],
),
),
);
}
}