feat(home): 顶部导航随翻页联动并把推荐更名为精选
This commit is contained in:
1 parent
2f4593a46e
commit
335e5dc286
27 files changed
+1095
-214
No files matched your search
@@ -13,6 +13,8 @@ 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:fruitshorts/pages/player/player_view.dart';
|
||||
import 'package:fruitshorts/pages/recommend/recommend_types.dart';
|
||||
import 'package:fruitshorts/pages/recommend/widgets/recommend_top_nav.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';
|
||||
|
||||
@@ -50,7 +52,7 @@ void main() {
|
||||
.toList();
|
||||
expect(centers, orderedEquals(centers.toList()..sort()));
|
||||
expect(find.byKey(const Key('recommend-section-hits')), findsNothing);
|
||||
expect(find.text('Featured'), findsNothing);
|
||||
expect(find.text('Featured'), findsOneWidget);
|
||||
expect(find.text('Categories'), findsNothing);
|
||||
expect(find.text('Charts'), findsNothing);
|
||||
expect(find.byKey(const Key('mine-mini-player')), findsNothing);
|
||||
@@ -173,7 +175,7 @@ void main() {
|
||||
matching: find.text('Playlists'),
|
||||
),
|
||||
);
|
||||
expect(selected.style?.fontWeight, FontWeight.w700);
|
||||
expect(selected.style?.fontWeight, FontWeight.w400);
|
||||
expect(
|
||||
tester.getRect(find.byKey(const Key('recommend-top-nav'))),
|
||||
topNavBefore,
|
||||
@@ -191,6 +193,46 @@ void main() {
|
||||
expect(find.byKey(const Key('recommend-tab-recommend')), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('should_follow_partial_swipe_before_selected_page_changes', (
|
||||
tester,
|
||||
) async {
|
||||
await _pumpApp(tester, _PagedCatalogRepository());
|
||||
final pages = find.byKey(const Key('recommend-tab-page-view'));
|
||||
final gesture = await tester.startGesture(tester.getCenter(pages));
|
||||
await gesture.moveBy(const Offset(-30, 0));
|
||||
await tester.pump();
|
||||
await gesture.moveBy(const Offset(-80, 0));
|
||||
await tester.pump();
|
||||
final nav = tester.widget<RecommendTopNav>(find.byType(RecommendTopNav));
|
||||
expect(nav.pagePosition, inExclusiveRange(0.0, 0.5));
|
||||
final underline = tester.widget<Container>(
|
||||
find.byKey(const Key('recommend-tab-playlist-underline')),
|
||||
);
|
||||
final color = (underline.decoration! as BoxDecoration).color!;
|
||||
expect(color.a, inExclusiveRange(0.0, 0.5));
|
||||
await gesture.up();
|
||||
await tester.pumpAndSettle();
|
||||
_drainLayoutExceptions(tester);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'should_keep_all_dramas_selected_during_direct_cross_page_click',
|
||||
(tester) async {
|
||||
await _pumpApp(tester, _PagedCatalogRepository());
|
||||
await tester.ensureVisible(find.byKey(const Key('recommend-tab-all')));
|
||||
await tester.pumpAndSettle();
|
||||
await tester.tap(find.byKey(const Key('recommend-tab-all')));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(milliseconds: 70));
|
||||
final nav = tester.widget<RecommendTopNav>(find.byType(RecommendTopNav));
|
||||
expect(nav.pagePosition, inExclusiveRange(0.5, 1.5));
|
||||
expect(nav.selected, RecommendInnerTab.allDramas);
|
||||
await tester.pumpAndSettle();
|
||||
_drainLayoutExceptions(tester);
|
||||
expect(find.byKey(const Key('all-dramas-grid')), findsOneWidget);
|
||||
},
|
||||
);
|
||||
|
||||
testWidgets('should_load_next_page_without_expanding_page_size', (
|
||||
tester,
|
||||
) async {
|
||||
|
||||
Reference in new issue
Block a user