fix(home): 修复目录错误态被占位层遮挡

This commit is contained in:
Zhou Weidong committed 2026-10-26 22:49:10 +08:00
1 parent bf47c065c9
commit d4ce3a5d8b
2 files changed
+45 -3

No files matched your search

+40 -3
View File
@@ -4,6 +4,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:provider/provider.dart';
import 'package:fruitshorts/app.dart';
import 'package:fruitshorts/core/config/app_config.dart';
import 'package:fruitshorts/core/data/models/drama.dart';
@@ -13,6 +14,8 @@ import 'package:fruitshorts/core/data/repositories/catalog_repository.dart';
import 'package:fruitshorts/core/data/repositories/favorite_repository.dart';
import 'package:fruitshorts/core/data/repositories/playback_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/data/services/catalog_controller.dart';
import 'package:fruitshorts/core/data/services/category_controller.dart';
import 'package:shared_preferences_platform_interface/in_memory_shared_preferences_async.dart';
import 'package:shared_preferences_platform_interface/shared_preferences_async_platform_interface.dart';
@@ -51,7 +54,11 @@ void main() {
expect(find.byType(CircularProgressIndicator), findsNothing);
repository.complete(_feed);
await tester.pumpAndSettle();
await _pumpForAppData(tester);
await _pumpUntilFound(
tester,
find.byKey(const Key('home-feed-card-the-signal-demo')),
);
expect(find.byKey(const Key('startup-splash')), findsNothing);
expect(find.byKey(const Key('home-grid-skeleton')), findsNothing);
@@ -62,7 +69,8 @@ void main() {
tester,
) async {
await _pumpApp(tester, _FailingCatalogRepository());
await tester.pumpAndSettle();
await _pumpForAppData(tester);
await _pumpUntilFound(tester, find.byKey(const Key('home-grid-error')));
expect(find.byKey(const Key('home-grid-header')), findsOneWidget);
expect(find.byKey(const Key('home-grid-error')), findsOneWidget);
@@ -72,7 +80,8 @@ void main() {
testWidgets('should_show_catalog_empty_state_inside_grid', (tester) async {
await _pumpApp(tester, _EmptyCatalogRepository());
await tester.pumpAndSettle();
await _pumpForAppData(tester);
await _pumpUntilFound(tester, find.byKey(const Key('home-grid-empty')));
expect(find.byKey(const Key('home-grid-header')), findsOneWidget);
expect(find.byKey(const Key('home-grid-empty')), findsOneWidget);
@@ -99,6 +108,34 @@ Future<void> _pumpApp(WidgetTester tester, CatalogRepository repository) async {
await tester.pump();
}
Future<void> _pumpUntilFound(WidgetTester tester, Finder finder) async {
for (var frame = 0; frame < 40; frame++) {
if (finder.evaluate().isNotEmpty) return;
await tester.pump(const Duration(milliseconds: 16));
}
await tester.pump();
}
Future<void> _pumpForAppData(WidgetTester tester) async {
await tester.runAsync(
() => Future<void>.delayed(Duration.zero),
);
for (var frame = 0; frame < 40; frame++) {
final root = find.byKey(const Key('home-tabs'));
if (root.evaluate().isNotEmpty) {
final context = tester.element(root);
final catalog = context.read<CatalogController>();
final categories = context.read<CategoryController>();
if (catalog.settled && !catalog.loading && !categories.loading) {
await tester.pump();
return;
}
}
await tester.pump(const Duration(milliseconds: 16));
}
await tester.pump();
}
final _feed = HomeFeed(
sections: [
FeedSection(code: 'hot', title: 'Hot', dramas: [demoDramas.first]),