feat(client): 购买卡年付明示省 2 个月(tab 标注+划线原价+省钱说明行)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
wangjia
2026-07-03 23:50:20 +08:00
parent c3455ce7a7
commit cd6621d733
+19 -1
View File
@@ -167,7 +167,7 @@ class _PurchaseCardState extends ConsumerState<PurchaseCard> {
),
if (!_isPromo)
DsSeg(
items: const ['年付', '月付'],
items: const ['年付 · 省 2 个月', '月付'],
index: _cycleIdx,
onChanged: (i) => setState(() => _cycleIdx = i),
),
@@ -252,6 +252,17 @@ class _PurchaseCardState extends ConsumerState<PurchaseCard> {
fontFamilyFallback: AppFonts.monoFallback)),
const SizedBox(width: 8),
],
// 年付划线展示月付×12 原价,直观看到省 2 个月
if (!_isPromo && _cycleIdx == 0) ...[
Text('¥${_fmt(_group.monthly.price * 12)}',
style: TextStyle(
fontSize: AppDims.fsSm,
color: t.faint,
decoration: TextDecoration.lineThrough,
fontFamily: AppFonts.mono,
fontFamilyFallback: AppFonts.monoFallback)),
const SizedBox(width: 8),
],
Text('¥${_fmt(_plan.price)}',
style: TextStyle(
fontSize: 24,
@@ -265,6 +276,13 @@ class _PurchaseCardState extends ConsumerState<PurchaseCard> {
fontFamilyFallback: AppFonts.monoFallback)),
],
),
if (!_isPromo && _cycleIdx == 0) ...[
const SizedBox(height: 6),
Text(
'月付 ¥${_fmt(_group.monthly.price)} × 12 个月 = ¥${_fmt(_group.monthly.price * 12)}'
'年付立省 ¥${_fmt(_group.monthly.price * 12 - _group.annual.price)},相当于免费用 2 个月',
style: TextStyle(fontSize: AppDims.fsXs, color: t.success)),
],
const SizedBox(height: 6),
Text('到期时间自动叠加,未到期续费不吃亏 · 支付宝支付',
style: TextStyle(fontSize: AppDims.fsXs, color: t.faint)),