import 'package:flutter/material.dart'; import 'package:fl_chart/fl_chart.dart'; import '../../models/subscription_model.dart'; import '../../services/currency_util.dart'; import '../../theme/app_colors.dart'; /// 파이 차트에서 선택된 섹션에 표시되는 배지 위젯 class AnalysisBadge extends StatelessWidget { final double size; final Color borderColor; final SubscriptionModel subscription; const AnalysisBadge({ super.key, required this.size, required this.borderColor, required this.subscription, }); @override Widget build(BuildContext context) { return AnimatedContainer( duration: PieChart.defaultDuration, width: size, height: size, decoration: BoxDecoration( color: AppColors.pureWhite, shape: BoxShape.circle, border: Border.all( color: borderColor, width: 2, ), boxShadow: [ BoxShadow( color: AppColors.shadowBlack, blurRadius: 10, spreadRadius: 2, ), ], ), child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( subscription.serviceName.length > 5 ? '${subscription.serviceName.substring(0, 5)}...' : subscription.serviceName, style: const TextStyle( fontSize: 8, fontWeight: FontWeight.bold, color: AppColors.darkNavy, ), ), const SizedBox(height: 0), FutureBuilder( future: CurrencyUtil.formatAmount( subscription.monthlyCost, subscription.currency, ), builder: (context, snapshot) { if (snapshot.hasData) { final amountText = snapshot.data!; // 금액이 너무 길면 축약 final displayText = amountText.length > 8 ? amountText.replaceAll('원', '').trim() : amountText; return Text( displayText, style: const TextStyle( fontSize: 7, color: AppColors.navyGray, ), ); } return const SizedBox(); }, ), ], ), ), ); } }