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:
@@ -81,6 +81,57 @@ void main() {
|
||||
expect(find.byType(InkWell), findsNWidgets(2));
|
||||
});
|
||||
|
||||
bool istPunkt(Widget w) =>
|
||||
w is Container && (w.decoration as BoxDecoration?)?.shape == BoxShape.circle;
|
||||
|
||||
testWidgets(
|
||||
'ein Punkt zeigt an, dass im anderen Reiter etwas im Hintergrund läuft',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(_wrap(SubTabs(
|
||||
labels: const ['YouTube', 'Server'],
|
||||
index: 0,
|
||||
badges: const [false, true],
|
||||
onChanged: (_) {},
|
||||
)));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(
|
||||
find.descendant(
|
||||
of: find.ancestor(
|
||||
of: find.text('Server'), matching: find.byType(AnimatedContainer)),
|
||||
matching: find.byWidgetPredicate(istPunkt),
|
||||
),
|
||||
findsOneWidget,
|
||||
);
|
||||
expect(
|
||||
find.descendant(
|
||||
of: find.ancestor(
|
||||
of: find.text('YouTube'),
|
||||
matching: find.byType(AnimatedContainer)),
|
||||
matching: find.byWidgetPredicate(istPunkt),
|
||||
),
|
||||
findsNothing,
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('ohne badges-Angabe bleibt ein Reiter ohne Punkt', (tester) async {
|
||||
await tester.pumpWidget(_wrap(SubTabs(
|
||||
labels: const ['Lieder', 'Kategorie'],
|
||||
index: 0,
|
||||
onChanged: (_) {},
|
||||
)));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(
|
||||
find.descendant(
|
||||
of: find.ancestor(
|
||||
of: find.text('Lieder'), matching: find.byType(AnimatedContainer)),
|
||||
matching: find.byWidgetPredicate(istPunkt),
|
||||
),
|
||||
findsNothing,
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('der Wechsel wird animiert, nicht gesprungen', (tester) async {
|
||||
await tester.pumpWidget(_wrap(SubTabs(
|
||||
labels: const ['Lieder', 'Kategorie'],
|
||||
|
||||
Reference in New Issue
Block a user