HOME · GALAXY · 행성·성운 상세 · 팬덤 라운지 · 이클립스 화면
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
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,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user