import 'package:fruitshorts/core/data/models/drama.dart'; import 'package:fruitshorts/core/data/models/home_feed.dart'; import 'package:fruitshorts/core/data/repositories/catalog_repository.dart'; /// 测试用目录数据:三部分区里的短剧,标题与后端演示数据保持一致。 class FakeCatalogRepository implements CatalogRepository { FakeCatalogRepository({List? dramas}) : dramas = dramas ?? demoDramas; final List dramas; @override Future fetchHomeFeed() async => _feed(); @override Future fetchDiscoverFeed() async => _feed(); @override Future fetchDrama(String dramaId) async { return dramas.firstWhere((drama) => drama.id == dramaId); } HomeFeed _feed() => HomeFeed( sections: [FeedSection(code: 'hot', title: '热门推荐', dramas: dramas)], ); } final List demoDramas = [ _drama( 'the-signal-demo', 'The Signal', 'Suspense · Mystery', format: 1, ), _drama( 'city-lights-demo', 'City Lights & Velvet Nights', 'Urban Romance', format: 8, ), _drama( 'vengeance-demo', 'Vengeance Rising', 'Action · Thriller', format: 15, ), ]; Drama _drama( String id, String title, String genre, { required int format, }) => Drama( id: id, title: title, synopsis: '$title synopsis', posterUrl: '/files/$id.png', genre: genre, detailLoaded: true, episodes: [ for (var index = 0; index < 7; index++) Episode( id: '$id-${index + 1}', number: index + 1, title: 'Episode ${index + 1}', isFree: true, videoUrl: 'https://example.test/$format-$index.mp4', ), ], );