XpLevelHeader constructor
XpLevelHeader({})
Implementation
XpLevelHeader({
super.key,
required this.level,
required this.currentXp,
this.xpForNextLevel,
this.title,
this.xpText,
this.levelLabel = 'Lv',
this.maxLabel = 'MAX',
this.onTap,
this.semanticLabel,
}) {
if (level < 1) {
throw ArgumentError.value(level, 'level', 'must be >= 1');
}
if (currentXp < 0) {
throw ArgumentError.value(currentXp, 'currentXp', 'must be >= 0');
}
final next = xpForNextLevel;
if (next != null) {
if (next <= 0) {
throw ArgumentError.value(next, 'xpForNextLevel', 'must be > 0');
}
if (currentXp > next) {
throw ArgumentError.value(
currentXp,
'currentXp',
'must be <= xpForNextLevel',
);
}
}
for (final (name, value) in [
('levelLabel', levelLabel),
('maxLabel', maxLabel),
]) {
if (value.trim().isEmpty) {
throw ArgumentError.value(value, name, 'must not be blank');
}
}
for (final (name, value) in [
('title', title),
('xpText', xpText),
('semanticLabel', semanticLabel),
]) {
if (value != null && value.trim().isEmpty) {
throw ArgumentError.value(value, name, 'must not be blank');
}
}
}