角标修改

This commit is contained in:
谢宇宁
2026-11-05 17:04:01 +07:00
parent ab53d09596
commit 61c290cf64
4 changed files with 132 additions and 27 deletions
+1 -4
View File
@@ -99,16 +99,13 @@ class AcgItemWidget extends StatelessWidget {
}
Widget _buildLevelIcon() {
if (info?.permission == 1 && Config.coinMark)
return _levelTag('金币', const Color(0xFF1F2029),
bgColor: [const Color(0xFFFFE580), const Color(0xFFFACC15)]);
if (info?.permission == 0 && Config.vipMark)
return _levelTag('VIP', Colors.white,
bgColor: [const Color(0xFFFF8000), const Color(0xFFFF7A01)]);
return const SizedBox.shrink();
}
// 金币/VIP 角标:渐变底 + 文字,仅文字与文字色不同
// VIP 角标:渐变底 + 文字,仅文字与文字色不同
Widget _levelTag(String text, Color textColor, {List<Color>? bgColor}) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 6),
@@ -8,7 +8,6 @@ import 'package:hjsq/config/config.dart';
import 'package:hjsq/hj_model/drama_media_info.dart';
import 'package:hjsq/hj_page/drama/drama_detail_page.dart';
import 'package:hjsq/hj_page/drama/drama_tag_detail_page.dart';
import 'package:hjsq/hj_utils/free_play_manager.dart';
import 'package:hjsq/tools_base/widget/net_image_widget.dart';
/// AI 短剧封面卡:按 Figma「短片封面展示样式」独立绘制。
@@ -196,12 +195,9 @@ class DramaCoverCard extends StatelessWidget {
Widget? get _badge {
if (mediaInfo.permissionIconHide == true) return null;
/// 免费
/// 免费:仅真正免费的内容(permission == 2)展示;不再因剩余试看次数把 VIP 显示成免费
/// Config.freeMark 后端下发是否展示免费角标
/// mediaInfo.permission == 2视频为免费
/// FreePlayManager().canShowFreeBadge() 免费观看次数是否可看, 相等于 需要金币或者vip观看的,只要免费观看次数有,都为免费
if (Config.freeMark &&
(mediaInfo.permission == 2 || FreePlayManager().canShowFreeBadge())) {
if (Config.freeMark && mediaInfo.permission == 2) {
return _cornerBadge(
'免费',
const Color(0xFF1CD302),
@@ -223,14 +219,6 @@ class DramaCoverCard extends StatelessWidget {
);
}
/// 金币
if (Config.coinMark && mediaInfo.permission == 1) {
return _cornerBadge(
'金币',
const Color(0xFFFFCC14),
const Color(0xFF292929),
);
}
return null;
}
@@ -2,9 +2,8 @@ import 'package:flutter/material.dart';
import '../../../config/config.dart';
import '../../../hj_model/video_model.dart';
import '../../../hj_utils/free_play_manager.dart';
/// 封面右上角的售卖角标:免费试看 / 金币 / VIP,三者互斥,都不满足就不占位。
/// 封面右上角的售卖角标:仅 VIP(金币角标已去掉;不再因试看次数显示「免费」)。
/// 展不展示还受 ping 下发的 freeMark / coinMark / vipMark 三个开关控制
class LevelMarkChip extends StatelessWidget {
final VideoModel? videoModel;
@@ -14,14 +13,7 @@ class LevelMarkChip extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (videoModel?.freeArea == true) return const SizedBox();
// 免费试看:ping 免费类角标总开关 freeMark + 实时试看权益(次数用尽即不再展示)
if (Config.freeMark && FreePlayManager().canShowFreeTrialBadge(videoModel)) {
return _chip("免费", const Color(0xffffffff), const [Color(0xff1CD302), Color(0xff1CD302)]);
}
final isCoin = videoModel?.isCoinVideo() == true;
if (isCoin && Config.coinMark) {
return _chip("金币", const Color(0xff1F2029), const [Color(0xffFFE580), Color(0xffFACC15)]);
}
if (!isCoin && Config.vipMark) {
return _chip("VIP", const Color(0xffFFFFFF), const [Color(0xffFF8000), Color(0xffFF7A01)]);
}