feat(cover): 支持横版封面并收紧底栏图标间距
flutter-ci / test (push) Canceled after 0s

- Drama 新增 coverLandscape,WatchProgress 新增 dramaCoverLandscape
- 继续观看横幅优先使用横版封面,缺省回退竖版
- 底部导航栏图标与文字间距由 5dp 收紧至 1dp
This commit is contained in:
Vicky authored and trae-solo-agent committed 2026-10-29 17:32:41 +08:00
1 parent 3590cd0c55
commit 26321e3348
8 files changed
+64 -12

No files matched your search

+17
View File
@@ -46,6 +46,23 @@ void main() {
expect(drama.episodeCount, 12);
});
test('should_parse_landscape_cover_for_horizontal_slots', () {
final card = Drama.fromCardJson(const {
'id': 5,
'title': '闪婚后',
'cover': '/files/cover.jpg',
'coverLandscape': '/files/cover-wide.jpg',
});
final legacy = Drama.fromDetailJson(const {
'id': 6,
'title': '替嫁新娘',
'cover': '/files/cover-2.jpg',
});
expect(card.coverLandscape, '/files/cover-wide.jpg');
expect(legacy.coverLandscape, isEmpty);
});
test('should_count_shipped_episodes_when_detail_response_is_parsed', () {
final drama = Drama.fromDetailJson(const {
'id': 5,
+1 -1
View File
@@ -19,7 +19,7 @@ void main() {
expect(AppDimens.sectionTitle, 16);
expect(AppDimens.pageTitle, 20);
expect(AppDimens.navLabel, 13);
expect(AppDimens.navLabelGap, 5);
expect(AppDimens.navLabelGap, 1);
expect(AppDimens.navIcon, 30);
expect(AppDimens.buttonHeight, 48);
expect(AppDimens.primaryButtonHeight, 52);
@@ -8,6 +8,7 @@ import 'package:fruitshorts/core/data/models/feed_page.dart';
import 'package:fruitshorts/core/data/models/home_feed.dart';
import 'package:fruitshorts/core/data/models/page_result.dart';
import 'package:fruitshorts/core/data/models/watch_progress.dart';
import 'package:fruitshorts/core/data/models/watch_record.dart';
import 'package:fruitshorts/core/data/repositories/catalog_repository.dart';
import 'package:fruitshorts/core/data/repositories/watch_history_repository.dart';
import 'package:fruitshorts/core/data/remote/api_client.dart';
@@ -278,6 +279,25 @@ void main() {
expect(controller.error, '账号不存在,请先注册');
});
test('should_prefer_page_landscape_cover_and_fall_back_to_portrait', () {
WatchRecord record(String? landscape) => WatchRecord(
progress: WatchProgress(
dramaId: '1',
episodeId: 'episode-1',
position: const Duration(seconds: 12),
duration: const Duration(seconds: 60),
dramaCover: '/files/poster.webp',
dramaCoverLandscape: landscape,
),
);
expect(
record('/files/wide.webp').displayLandscapeCover,
'/files/wide.webp',
);
expect(record(null).displayLandscapeCover, '/files/poster.webp');
});
}
class ControlledWatchHistory implements WatchHistoryRepository {