UX-Simulation, Teil 3: Abbrechen, Badge, Versionsnummer, Wisch-Strecke
Die vier zuletzt zurückgestellten Punkte aus der UX-Simulation: - Abbrechen-Knopf für hängende YouTube-Downloads (Future.any gegen ein Abbruch-Signal, Anfrage läuft im Hintergrund aus statt die App zu blockieren) - Punkt am inaktiven Download-Unterreiter, wenn dort etwas im Hintergrund läuft (SubTabs bekommt einen optionalen badges-Parameter) - Versionsnummer unter "Über Melo" (neue Abhängigkeit: package_info_plus) - Mini-Player führt beim Wischen jetzt sichtbar mit und wertet zusätzlich zum Schwung auch die zurückgelegte Strecke aus — ein langsames, aber weites Wischen wurde vorher komplett ignoriert Dabei drei bestehende Widget-Tests korrigiert, die den Download-Tab ohne Provider<DownloadService> aufbauten (hauptmenue_test.dart, home_shell_test.dart, online_screen_test.dart) — lief bisher nur, weil niemand danach fragte; das neue Badge tut das jetzt app-weit. 550 Tests grün (vorher 539), flutter analyze ohne Befund.
This commit is contained in:
@@ -59,6 +59,11 @@ class _DownloadsScreenState extends State<DownloadsScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// Fortschrittsanzeigen stecken jeweils nur im aktiven Unterreiter — ohne
|
||||
// diesen Punkt sah man nicht, dass im anderen Bereich gerade ein
|
||||
// Download läuft, während man selbst woanders war.
|
||||
final ytLaeuft = context.watch<YtDownloadService>().laeuft;
|
||||
final serverLaeuft = context.watch<DownloadService>().laeuft;
|
||||
return SafeArea(
|
||||
bottom: false,
|
||||
child: Column(
|
||||
@@ -67,6 +72,10 @@ class _DownloadsScreenState extends State<DownloadsScreen> {
|
||||
SubTabs(
|
||||
labels: const ['YouTube', 'Server'],
|
||||
index: _subTab,
|
||||
badges: [
|
||||
ytLaeuft && _subTab != 0,
|
||||
serverLaeuft && _subTab != 1,
|
||||
],
|
||||
onChanged: (i) => setState(() => _subTab = i),
|
||||
),
|
||||
Expanded(
|
||||
@@ -789,8 +798,21 @@ class _YouTubeBereichState extends State<_YouTubeBereich> {
|
||||
const SizedBox(height: 16),
|
||||
const LinearProgressIndicator(),
|
||||
const SizedBox(height: 8),
|
||||
Text(dienst.status ?? 'Läuft …',
|
||||
style: const TextStyle(color: MeloTheme.text2, fontSize: 12)),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(dienst.status ?? 'Läuft …',
|
||||
style: const TextStyle(
|
||||
color: MeloTheme.text2, fontSize: 12)),
|
||||
),
|
||||
// Ohne diesen Knopf war ein hängender Download (bis zu zwei
|
||||
// mal 180s) nur durch Schließen der App zu stoppen.
|
||||
TextButton(
|
||||
onPressed: dienst.abbrechen,
|
||||
child: const Text('Abbrechen'),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
if (_meldung != null) ...[
|
||||
const SizedBox(height: 16),
|
||||
|
||||
Reference in New Issue
Block a user