fix(recommend): 修正热播信息行与操作栏位置

This commit is contained in:
Zhou Weidong committed 2026-10-22 19:46:44 +08:00
1 parent 8737937875
commit 0c06a6dccd
11 files changed
+78 -5

No files matched your search

@@ -21,6 +21,7 @@ part 'home_feed_overlay_parts.dart';
const double _progressHeight = 2;
const double _progressHitHeight = 12;
const double _pageHorizontal = 14;
const double _railRight = 8;
const double _railGap = 12;
const double _railBottomOffset = 60;
const List<Shadow> _boostTextShadows = [
@@ -53,6 +54,7 @@ class HomeFeedOverlay extends StatefulWidget {
required this.onMore,
this.likeCount,
this.favoriteCount,
this.rankingRank,
this.commentCount,
this.authorNote = '',
this.onScrubStart,
@@ -69,6 +71,7 @@ class HomeFeedOverlay extends StatefulWidget {
final bool liked;
final int? likeCount;
final int? favoriteCount;
final int? rankingRank;
final int? commentCount;
final bool saved;
final String authorNote;
@@ -123,7 +126,7 @@ class _HomeFeedOverlayState extends State<HomeFeedOverlay> {
else if (widget.visible)
Positioned(
left: _pageHorizontal,
right: _pageHorizontal,
right: _railRight,
bottom: 12,
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
@@ -200,6 +203,7 @@ class _HomeFeedOverlayState extends State<HomeFeedOverlay> {
Widget _rail() {
return HomeFeedActionRail(
key: const Key('home-feed-action-rail'),
saved: widget.saved,
liked: widget.liked,
favoriteCount: widget.favoriteCount,
@@ -216,6 +220,7 @@ class _HomeFeedOverlayState extends State<HomeFeedOverlay> {
episode: widget.episode,
onDetail: widget.onDetail,
onOpenFullPlayer: widget.onOpenFullPlayer,
rankingRank: widget.rankingRank,
);
}
}
@@ -30,12 +30,14 @@ class HomeFeedInfoPanel extends StatefulWidget {
required this.episode,
required this.onDetail,
required this.onOpenFullPlayer,
this.rankingRank,
});
final Drama drama;
final Episode episode;
final VoidCallback onDetail;
final VoidCallback onOpenFullPlayer;
final int? rankingRank;
@override
State<HomeFeedInfoPanel> createState() => _HomeFeedInfoPanelState();
@@ -119,6 +121,7 @@ class _HomeFeedInfoPanelState extends State<HomeFeedInfoPanel> {
Widget _metaPills(AppLocalizations l10n) {
final hot = isHotDrama(widget.drama);
final views = widget.drama.viewCount;
final rank = widget.rankingRank;
if (!hot && views <= 0) return const SizedBox.shrink();
return Wrap(
key: const Key('home-feed-meta-pills'),
@@ -139,7 +142,9 @@ class _HomeFeedInfoPanelState extends State<HomeFeedInfoPanel> {
),
const SizedBox(width: 2),
Text(
l10n.rankingHot,
rank != null && rank > 0
? l10n.hotChartRanked(rank)
: l10n.hotChartLabel,
style: const TextStyle(
color: AppColors.textPrimary,
fontSize: _metaFont,
@@ -154,7 +159,7 @@ class _HomeFeedInfoPanelState extends State<HomeFeedInfoPanel> {
key: const Key('home-feed-view-pill'),
background: AppColors.overlaySoft,
child: Text(
formatInteractionCount(views),
formatPlayCount(views),
style: const TextStyle(
color: AppColors.textPrimary,
fontSize: _metaFont,
@@ -209,7 +214,7 @@ class _HomeFeedInfoPanelState extends State<HomeFeedInfoPanel> {
],
Expanded(
child: Text(
genres.join(' | '),
genres.join(' '),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
@@ -225,6 +230,8 @@ class _HomeFeedInfoPanelState extends State<HomeFeedInfoPanel> {
widget.drama.episodeCount,
),
key: const Key('home-feed-episode-progress'),
maxLines: 1,
softWrap: false,
style: const TextStyle(
color: AppColors.overlaySecondary,
fontSize: _metaFont,