checkNamed function

void checkNamed(
  1. Map<Symbol, dynamic> named,
  2. List<String> optionalNames, [
  3. List<String>? requiredNames
])

Checks named parameters

Implementation

void checkNamed(
  Map<Symbol, dynamic> named,
  List<String> optionalNames, [
  List<String>? requiredNames,
]) {
  requiredNames ??= <String>[];
  final List<Symbol> optionalSyms =
      optionalNames.map(($x) => Symbol($x)).toList();
  final List<Symbol> requiredSyms =
      requiredNames.map((x) => Symbol(x)).toList();
  final keys = named.keys.toList();
  for (int i = 0; i < keys.length; i++) {
    var key = keys[i];
    if ((!optionalSyms.contains(key)) && (!requiredSyms.contains(key))) {
      throw Exception('Unexpected named parameter: $key');
    }
  }
  for (int i = 0; i < requiredSyms.length; i++) {
    var sym = requiredSyms[i];
    if (!keys.contains(sym)) {
      throw Exception('Required named parameter $sym not supplied');
    }
  }
}