Parse source as a, possibly signed, integer literal and return its value.
Parse source as a, possibly signed, integer literal and return its value.
The source must be a non-empty sequence of base-radix digits, optionally prefixed with a minus or plus sign ('-' or '+').
The radix must be in the range 2..36. The digits used are first the decimal digits 0..9, and then the letters 'a'..'z' with values 10 through 35. Also accepts upper-case letters with the same values as the lower-case ones.
If no radix is given then it defaults to 10. In this case, the source
digits may also start with 0x
, in which case the number is interpreted
as a hexadecimal literal, which effectively means that the 0x
is ignored
and the radix is instead set to 16.
For any int n
and radix r
, it is guaranteed that
n == int.parse(n.toRadixString(r), radix: r)
.
If the source is not a valid integer literal, optionally prefixed by a sign, the onError is called with the source as argument, and its return value is used instead. If no onError is provided, a FormatException is thrown.
The onError handler can be chosen to return null
. This is preferable
to to throwing and then immediately catching the FormatException.
Example:
var value = int.parse(text, onError: (source) => null);
if (value == null) ... handle the problem
The onError function is only invoked if source is a String. It is
not invoked if the source is, for example, null
.