getIntegerFromDynamic static method
Converts a dynamic value to an integer.
Behavior:
null→0int→ value as-isdouble→ truncated toward zero (e.g.3.9→3,-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();
}