XpLevelHeader constructor

XpLevelHeader({
  1. Key? key,
  2. required int level,
  3. required int currentXp,
  4. int? xpForNextLevel,
  5. String? title,
  6. String? xpText,
  7. String levelLabel = 'Lv',
  8. String maxLabel = 'MAX',
  9. VoidCallback? onTap,
  10. String? semanticLabel,
})

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');
    }
  }
}