first commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
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(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user