feat(flutter): 剧场页搜索与吸顶筛选精致化
This commit is contained in:
1 parent
f9d4f982f0
commit
5283ab2549
3 files changed
+204
-33
No files matched your search
@@ -10,6 +10,7 @@ import 'package:fruitshorts/core/data/repositories/category_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/theme/app_colors.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';
|
||||
|
||||
@@ -170,6 +171,65 @@ void main() {
|
||||
expect(counter.categoryLoads + counter.feedLoads, greaterThan(before));
|
||||
expect(find.byType(RefreshProgressIndicator), findsNothing);
|
||||
});
|
||||
|
||||
testWidgets('should_style_search_shell_and_focus_border', (tester) async {
|
||||
await _pumpTheater(tester, categoryRepository: _GridCategoryRepository());
|
||||
BoxDecoration shell() =>
|
||||
tester
|
||||
.widget<AnimatedContainer>(
|
||||
find.byKey(const Key('discover-search-shell')),
|
||||
)
|
||||
.decoration!
|
||||
as BoxDecoration;
|
||||
|
||||
expect(shell().borderRadius, BorderRadius.circular(20));
|
||||
expect((shell().border! as Border).top.color, AppColors.border);
|
||||
|
||||
await tester.tap(find.byKey(const Key('discover-search')));
|
||||
await tester.pump(const Duration(milliseconds: 200));
|
||||
|
||||
expect((shell().border! as Border).top.color, AppColors.blue);
|
||||
});
|
||||
|
||||
testWidgets('should_pin_theater_filters_when_scrolling', (tester) async {
|
||||
await _pumpTheater(
|
||||
tester,
|
||||
categoryRepository: _GridCategoryRepository(
|
||||
discoverFeed: _tallDiscoverFeed,
|
||||
),
|
||||
);
|
||||
BoxDecoration header() =>
|
||||
tester
|
||||
.widget<AnimatedContainer>(
|
||||
find.byKey(const Key('theater-sticky-header')),
|
||||
)
|
||||
.decoration!
|
||||
as BoxDecoration;
|
||||
final before = tester.getRect(
|
||||
find.byKey(const Key('theater-sticky-header')),
|
||||
);
|
||||
expect(header().color, Colors.transparent);
|
||||
|
||||
await tester.drag(_verticalFeed, const Offset(0, -220));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
final after = tester.getRect(
|
||||
find.byKey(const Key('theater-sticky-header')),
|
||||
);
|
||||
expect(after.top, closeTo(before.top, 0.5));
|
||||
expect(header().color, AppColors.ink);
|
||||
});
|
||||
|
||||
testWidgets('should_use_compact_refresh_indicator', (tester) async {
|
||||
await _pumpTheater(tester, categoryRepository: _GridCategoryRepository());
|
||||
final indicator = tester.widget<RefreshIndicator>(
|
||||
find.byKey(const Key('discover-refresh')),
|
||||
);
|
||||
|
||||
expect(indicator.color, AppColors.blue);
|
||||
expect(indicator.strokeWidth, 2);
|
||||
expect(indicator.edgeOffset, 110);
|
||||
});
|
||||
}
|
||||
|
||||
final Finder _verticalFeed = find.byWidgetPredicate(
|
||||
|
||||
Reference in new issue
Block a user