toolheim/mobile-app/lib/widgets/stats_widget.dart

75 lines
2.5 KiB
Dart
Raw Permalink Normal View History

2019-08-07 14:55:33 +02:00
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:toolheim/data/warband_roster.dart';
class StatsWidget extends StatelessWidget {
Stats stats;
@override
Widget build(BuildContext context) {
return GridView.count(
crossAxisCount: 10,
crossAxisSpacing: 0.0,
//padding: const EdgeInsets.all(10),
primary: false,
shrinkWrap: true,
children: <Widget>[
statsElement('M', stats.movement,
stats.movement > 3 ? (stats.movement > 5 ? 3 : 2) : 1),
statsElement('WS', stats.weaponSkill,
stats.weaponSkill > 3 ? (stats.weaponSkill > 5 ? 3 : 2) : 1),
statsElement(
'BS',
stats.ballisticSkill,
stats.ballisticSkill > 3
? (stats.ballisticSkill > 5 ? 3 : 2)
: 1),
statsElement('S', stats.strength,
stats.strength > 3 ? (stats.strength > 5 ? 3 : 2) : 1),
statsElement('T', stats.toughtness,
stats.toughtness > 3 ? (stats.toughtness > 5 ? 3 : 2) : 1),
statsElement('W', stats.wounds,
stats.wounds > 1 ? (stats.wounds > 2 ? 3 : 2) : 1),
statsElement('I', stats.initiative,
stats.initiative > 3 ? (stats.initiative > 5 ? 3 : 2) : 1),
statsElement('A', stats.attacks,
stats.attacks > 1 ? (stats.attacks > 2 ? 3 : 2) : 1),
statsElement('Ld', stats.leadership,
stats.leadership > 7 ? (stats.leadership > 9 ? 3 : 2) : 1),
statsElement('Sv', stats.save,
stats.save > 0 ? (stats.leadership > 1 ? 3 : 2) : 0),
]);
}
StatsWidget(this.stats);
Widget statsElement(stat, value, qualityFactor) {
TextStyle styles = TextStyle(fontSize: 14, fontWeight: FontWeight.normal);
String val = value.toString();
if (qualityFactor == 0) {
styles = styles.merge(TextStyle(color: Colors.black45));
val = '-';
}
if (qualityFactor > 1) {
styles = styles
.merge(TextStyle(color: Colors.red, fontWeight: FontWeight.bold));
}
if (qualityFactor > 2) {
styles = styles.merge(TextStyle(color: Colors.purple));
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
stat,
style: TextStyle(fontSize: 9, color: Colors.grey),
),
Text(val, style: styles)
]);
}
}