getIntegerFromDynamic static method

int getIntegerFromDynamic(
  1. dynamic value, {
  2. int defaultValue = 0,
})

Converts a dynamic value to an integer.

Behavior:

  • null0
  • int → value as-is
  • double → truncated toward zero (e.g. 3.93, -3.9-3)
  • String → robust cleaning for currency symbols, thousand separators, non-breaking spaces, and locale decimal (, vs .). Also supports scientific notation like "3e2".
  • Non-parsable / NaN / Infinity → 0

Examples:

Utils.getIntegerFromDynamic('  1.234,56 COP '); // 1234
Utils.getIntegerFromDynamic('3e2');             // 300
Utils.getIntegerFromDynamic(42.9);              // 42
Utils.getIntegerFromDynamic(null);              // 0

Implementation

static int getIntegerFromDynamic(
  dynamic value, {
  int defaultValue = 0,
}) {
  if (value == null) {
    return defaultValue;
  }
  if (value is int) {
    return value;
  }
  if (value is double) {
    if (value.isNaN || value.isInfinite) {
      return 0;
    }
    return value.truncate();
  }

  final String? cleaned = _normalizeNumberString(value);
  if (cleaned == null || cleaned.isEmpty) {
    return 0;
  }

  final int? i = int.tryParse(cleaned);
  if (i != null) {
    return i;
  }

  final double? d = double.tryParse(cleaned);
  if (d == null || d.isNaN || d.isInfinite) {
    return 0;
  }
  return d.truncate();
}