// plan_badge_card.dart — 侧栏底部套餐卡(对照 dapp.jsx 侧栏底部) // // surface 底 + border + radius-md;左 30×30 crown 渐变(clay500→700), // 右两行:套餐名 + 额度/有效期。免费/PRO 两态。 import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../pangolin_theme.dart'; import '../state/app_providers.dart'; import 'pangolin_icons.dart'; class PlanBadgeCard extends ConsumerWidget { const PlanBadgeCard({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final c = context.pangolin; final t = ref.watch(appTextProvider); final isFree = ref.watch(isFreePlanProvider); return Container( padding: const EdgeInsets.symmetric(horizontal: 11, vertical: 9), decoration: BoxDecoration( color: c.surface, border: Border.all(color: c.border), borderRadius: BorderRadius.circular(PangolinRadius.md), ), child: Row(children: [ Container( width: 30, height: 30, decoration: const BoxDecoration( shape: BoxShape.circle, gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [PangolinColors.clay500, PangolinColors.clay700], ), ), child: const Icon(PangolinIcons.crown, size: 15, color: PangolinColors.white), ), const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Text( isFree ? t.freePlanName : t.proMember, overflow: TextOverflow.ellipsis, style: PangolinText.caption.copyWith(color: c.fg1, fontWeight: FontWeight.w600, fontSize: 12), ), Text( isFree ? t.quotaFree : t.expires, overflow: TextOverflow.ellipsis, style: PangolinText.caption.copyWith(color: c.fg3, fontSize: 10.5), ), ], ), ), ]), ); } }