import 'package:flutter/material.dart'; import '../home_data.dart'; import '../home_screen.dart' show formatPop; import '../../../core/i18n/app_locale.dart'; /// 서버가 제공한 두 성장 조건을 각각 표시한다. 미조회는 0으로 보이지 않는다. class GrowthConditions extends StatelessWidget { const GrowthConditions({super.key, required this.growth, this.style}); final PlanetGrowth growth; /// 없으면 bodySmall. HOME 성장 카드는 사본의 14 흰색을 준다. final TextStyle? style; String _value(num? value) => value == null ? '—' : value == value.roundToDouble() ? formatPop(value.toInt()) : value.toString(); @override Widget build(BuildContext context) => growth.stage == 6 ? Text( context.l10n.growthFinalReached, style: style ?? Theme.of(context).textTheme.bodySmall, ) : Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ for (final row in [ (growth.popConditionLabel, growth.currentPop, growth.requiredPop), // 성운은 POP + 창립 멤버(B-10), 정식 행성은 POP + sFPI(B-11) 동시 충족이다. growth.isNebula ? ( growth.memberConditionLabel, growth.members, growth.requiredMembers, ) : ( growth.sfpiConditionLabel, growth.currentSfpi, growth.requiredSfpi, ), ]) Text( '${row.$1} · ${_value(row.$2)} / ${_value(row.$3)}', style: style ?? Theme.of(context).textTheme.bodySmall, ), if (growth.isNebula && growth.nebulaGoalPassed) Text( context.l10n.growthNebulaGoalPassed, style: style ?? Theme.of(context).textTheme.bodySmall, ), ], ); }