-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
artifact_info_card.dart
58 lines (53 loc) · 2.56 KB
/
artifact_info_card.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import 'package:flutter/material.dart';
import 'package:shiori/domain/enums/enums.dart';
import 'package:shiori/generated/l10n.dart';
import 'package:shiori/presentation/shared/bullet_list.dart';
import 'package:shiori/presentation/shared/extensions/i18n_extensions.dart';
import 'package:shiori/presentation/shared/images/artifact_image_type.dart';
import 'package:shiori/presentation/shared/item_expansion_panel.dart';
class ArtifactInfoCard extends StatelessWidget {
final bool isCollapsed;
final Function(bool)? expansionCallback;
const ArtifactInfoCard({
Key? key,
required this.isCollapsed,
this.expansionCallback,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final s = S.of(context);
final considerations = <String>[];
final hp = s.translateStatTypeWithoutValue(StatType.hp, removeExtraSigns: true);
final hpPercentage = s.translateStatTypeWithoutValue(StatType.hpPercentage);
final atkPercentage = s.translateStatTypeWithoutValue(StatType.atkPercentage);
final atk = s.translateStatTypeWithoutValue(StatType.atk);
final defPercentage = s.translateStatTypeWithoutValue(StatType.defPercentage);
final energyRecharge = s.translateStatTypeWithoutValue(StatType.energyRechargePercentage, removeExtraSigns: true);
final elementaryMastery = s.translateStatTypeWithoutValue(StatType.elementalMastery);
final critRate = s.translateStatTypeWithoutValue(StatType.critRate);
final critDmg = s.translateStatTypeWithoutValue(StatType.critDmgPercentage, removeExtraSigns: true);
considerations.add('${s.flower}: $hp');
considerations.add('${s.plume}: $atk');
considerations.add(
'${s.clock}: $atkPercentage / $defPercentage / $hpPercentage / $energyRecharge / $elementaryMastery',
);
considerations.add(
'${s.goblet}: $atkPercentage / $defPercentage / $hpPercentage / $elementaryMastery / ${s.physDmgPercentage('').trim()} / ${s.elementalDmgPercentage} (${s.translateElementType(ElementType.electro)}, ${s.translateElementType(ElementType.hydro)}...)',
);
considerations.add(
'${s.crown}: $atkPercentage / $defPercentage / $hpPercentage / $critRate / $critDmg / $elementaryMastery / ${s.healingBonus}',
);
return SliverToBoxAdapter(
child: ItemExpansionPanel(
title: s.note,
body: BulletList(
items: considerations,
iconResolver: (index) => ArtifactImageType(index: index),
),
icon: const Icon(Icons.info_outline),
isCollapsed: isCollapsed,
expansionCallback: expansionCallback,
),
);
}
}