v2.51.1 — Technik ausgelagert: Erweitert-Sektion (Logs, Diagnose, Entwickler, Scanner)
## Erweitert - Neuer ErweitertScreen (lib/screens/erweitert_screen.dart): Logs, Diagnosedaten-Toggle, Entwickler, Musik scannen - Neuer LogViewerScreen: In-Memory-Logbuch mit Kategorie-Filter (MeloLogger bekommt Anzeige-Puffer, der beim Senden nicht geleert wird) - Neuer EntwicklerScreen: Version, Session-ID, DB-Songzahl, Server-URLs, Test-Log senden - Einstellungen-Screen: 'Erweitert'-Sektion eingebaut, Diagnose-Toggle dorthin verschoben, Version auf 2.51 ## Einstellungen - 'Server verbinden' → 'Musikserver' umbenannt - Abmelden/Info/Cloud Sync unverändert
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../config/app_config.dart';
|
||||
import '../utils/farb_theme.dart';
|
||||
import 'cloud_screen.dart';
|
||||
import 'recap_screen.dart';
|
||||
import 'erweitert_screen.dart';
|
||||
import '../services/cloud_service.dart';
|
||||
|
||||
/// Vollwertiger Einstellungen-Screen – kein Popup mehr
|
||||
@@ -15,19 +15,6 @@ class SettingsScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SettingsScreenState extends State<SettingsScreen> {
|
||||
bool _diagnose = AppConfig.sendeDiagnosedaten;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_ladeDiagnose();
|
||||
}
|
||||
|
||||
Future<void> _ladeDiagnose() async {
|
||||
final p = await SharedPreferences.getInstance();
|
||||
if (mounted) setState(() => _diagnose = p.getBool('diagnose_daten') ?? AppConfig.sendeDiagnosedaten);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -69,8 +56,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
),
|
||||
_einstellungsKachel(
|
||||
icon: Icons.dns_outlined,
|
||||
titel: 'Server verbinden',
|
||||
untertitel: 'Navidrome Musik-Server',
|
||||
titel: 'Musikserver',
|
||||
untertitel: 'Navidrome Musik-Server verbinden',
|
||||
onTap: () {
|
||||
// Signal zum Öffnen des Server-Browsers
|
||||
Navigator.pop(context, 'server');
|
||||
@@ -92,31 +79,48 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: MeloTheme.dunkel1,
|
||||
borderRadius: BorderRadius.circular(14),
|
||||
border: Border.all(color: MeloTheme.dunkel2),
|
||||
),
|
||||
child: SwitchListTile(
|
||||
title: const Text(
|
||||
'Diagnosedaten senden',
|
||||
style: TextStyle(color: Colors.white, fontSize: 14),
|
||||
),
|
||||
subtitle: const Text(
|
||||
'Absturz-Logs & anonyme Nutzungsdaten',
|
||||
style: TextStyle(color: MeloTheme.textSekundaer, fontSize: 12),
|
||||
),
|
||||
value: _diagnose,
|
||||
activeThumbColor: MeloTheme.rot,
|
||||
onChanged: (v) async {
|
||||
setState(() => _diagnose = v);
|
||||
AppConfig.sendeDiagnosedaten = v;
|
||||
final p = await SharedPreferences.getInstance();
|
||||
p.setBool('diagnose_daten', v);
|
||||
},
|
||||
secondary: const Icon(Icons.bug_report_outlined, color: MeloTheme.rot, size: 22),
|
||||
),
|
||||
|
||||
// ─── Sektion: Erweitert (Technik) ───
|
||||
_sektionHeader('Erweitert'),
|
||||
_einstellungsKachel(
|
||||
icon: Icons.handyman_outlined,
|
||||
titel: 'Erweitert',
|
||||
untertitel: 'Logs, Diagnose, Entwickler & Scanner',
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (_) => ErweitertScreen(
|
||||
onScan: () {
|
||||
// Zurück zu MeloHome, das den Scanner startet
|
||||
Navigator.pop(context, 'scanner');
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
_einstellungsKachel(
|
||||
icon: Icons.article_outlined,
|
||||
titel: 'Logs',
|
||||
untertitel: 'App-Logbuch im Speicher ansehen',
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (_) => const LogViewerScreen()),
|
||||
);
|
||||
},
|
||||
),
|
||||
_einstellungsKachel(
|
||||
icon: Icons.bug_report_outlined,
|
||||
titel: 'Entwickler',
|
||||
untertitel: 'Version, URLs & technische Details',
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (_) => const EntwicklerScreen()),
|
||||
);
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
|
||||
@@ -130,7 +134,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
_infoZeile('Version', '2.31'),
|
||||
_infoZeile('Version', '2.51'),
|
||||
const Divider(color: MeloTheme.dunkel2, height: 1),
|
||||
_infoZeile('Theme', 'Schwarz + Rot'),
|
||||
const Divider(color: MeloTheme.dunkel2, height: 1),
|
||||
|
||||
Reference in New Issue
Block a user