fix(flutter): 剧场与榜单卡片直接进播放页

This commit is contained in:
Zhou Weidong committed 2026-10-20 15:15:27 +08:00
1 parent 04a1a4ee82
commit 720fd26935
6 files changed
+72 -47

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
// Author: fruit.com.cn
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../core/data/models/drama.dart';
import '../../core/data/services/catalog_controller.dart';
import '../../core/data/services/download_controller.dart';
import '../../core/data/services/wallet_controller.dart';
import 'player_view.dart';
/// 目录卡片统一入口:补齐详情后直接进入全屏播放页。
Future<void> playDramaFromCatalog(
BuildContext context,
Drama drama, {
String? episodeId,
}) async {
final catalog = context.read<CatalogController>();
final wallet = context.read<WalletController>();
final downloads = context.read<DownloadController>();
var playable = drama;
try {
playable = await catalog.requireDetail(drama);
} catch (_) {
// 取详情失败就用卡片自带的可播预览集起播。
}
if (!context.mounted) return;
final index = episodeId == null
? 0
: playable.episodes.indexWhere((episode) => episode.id == episodeId);
await Navigator.of(context).push(
MaterialPageRoute<void>(
builder: (_) => PlayerPage(
drama: playable,
initialIndex: index < 0 ? 0 : index,
wallet: wallet,
downloads: downloads,
),
),
);
}