assign static method

int assign({
  1. String? alpha2,
  2. String? alpha3,
  3. int? numeric,
})

Assigns user-defined codes. Returns index of country value in userValues Codes could be any combination of Alpha-2, alpha-2, or numeric code. Either one of 3 codes is required. After calling assign user-assigned codes are available through parse, tryParse, ofAlpha, and ofNumeric static methods.

Implementation

static int assign({String? alpha2, String? alpha3, int? numeric}) {
  assert(!(alpha2 == null && alpha3 == null && numeric == null));

  // check Alpha-2
  if (alpha2 != null &&
      (_parseAlpha(alpha2, _userValues) != -1 ||
          _parseAlpha(alpha2, _values) != -1)) {
    throw StateError('Alpha-2 code \"$alpha2\" is already assigned');
  }

  // check Alpha-3
  if (alpha3 != null &&
      (_parseAlpha(alpha3, _userValues) != -1 ||
          _parseAlpha(alpha3, _values) != -1)) {
    throw StateError('Alpha-3 code \"$alpha3\" is already assigned');
  }

  // check numeric
  if (numeric != null &&
      (_indexOfNum(numeric, _userValues) != -1 ||
          _indexOfNum(numeric, _values) != -1)) {
    throw StateError('Numeric code \"$numeric\" is already assigned');
  }

  _userValues.add(
      CountryCode.user(alpha2: alpha2, alpha3: alpha3, numeric: numeric));

  return _values.length + _userValues.length - 1;
}