fix(home): 修正封面角标与题材标签

This commit is contained in:
Zhou Weidong committed 2026-10-22 18:26:52 +08:00
1 parent 3abf69e886
commit e16faa258a
10 files changed
+199 -199

No files matched your search

@@ -6,7 +6,7 @@ import '../../../core/data/models/drama.dart';
import '../../../core/formatting/count_format.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/theme/app_dimens.dart';
import '../../../core/widgets/drama_genre_ribbon.dart';
import '../../../core/widgets/drama_cover_badge_ribbon.dart';
import '../../../core/widgets/remote_image.dart';
import '../../../l10n/app_localizations.dart';
import '../../home/widgets/home_drama_classification.dart';
@@ -54,38 +54,14 @@ class RecommendSectionCard extends StatelessWidget {
),
if (isHotDrama(drama))
Positioned(
top: AppDimens.spaceXs,
left: AppDimens.spaceXs,
child: Container(
key: Key('recommend-hot-$sectionKey-${drama.id}'),
padding: const EdgeInsets.symmetric(
horizontal: AppDimens.cardBadgeHorizontalPadding,
vertical: AppDimens.cardBadgeVerticalPadding,
),
decoration: BoxDecoration(
color: AppColors.badgeHot,
borderRadius: BorderRadius.circular(
AppDimens.cardBadgeRadius,
),
),
child: Text(
l10n.homeBadgeHot,
style: const TextStyle(
color: AppColors.textPrimary,
fontSize: AppDimens.cardBadgeFont,
fontWeight: FontWeight.w700,
),
),
top: 0,
right: 0,
child: DramaCoverBadgeRibbon(
label: l10n.homeBadgeHot,
color: AppColors.badgeHot,
keyPrefix: '$sectionKey-${drama.id}-hot',
),
),
Positioned(
top: 0,
right: 0,
child: DramaGenreRibbon(
tags: _cardTags(),
keyPrefix: '$sectionKey-${drama.id}',
),
),
],
),
),
@@ -123,6 +99,8 @@ class RecommendSectionCard extends StatelessWidget {
height: AppDimens.cardTitleLineHeight,
),
),
const SizedBox(height: AppDimens.cardTitleTagGap),
_tags(),
],
),
),
@@ -138,4 +116,20 @@ class RecommendSectionCard extends StatelessWidget {
.take(3)
.toList(growable: false);
}
Widget _tags() {
final tags = _cardTags();
if (tags.isEmpty) return const SizedBox.shrink();
return Text(
tags.join(' | '),
key: Key('recommend-tags-$sectionKey-${drama.id}'),
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left,
style: const TextStyle(
color: AppColors.textTertiary,
fontSize: AppDimens.cardTagFont,
),
);
}
}