resolveVariables static method

Future<Map<String, dynamic>> resolveVariables(
  1. List<String> requiredVariables,
  2. Future<Object?> variableResolver(
    1. String name
    ), {
  3. Map<String, dynamic>? variables,
  4. Map<String, dynamic>? resolvedVariables,
})

Implementation

static Future<Map<String, dynamic>> resolveVariables(
  List<String> requiredVariables,
  Future<Object?> Function(String name) variableResolver, {
  Map<String, dynamic>? variables,
  Map<String, dynamic>? resolvedVariables,
}) async {
  resolvedVariables ??= {};

  if (requiredVariables.isEmpty) return resolvedVariables;

  variables ??= {};

  for (var key in requiredVariables) {
    var value = variables[key] ?? resolvedVariables[key];
    value ??= await variableResolver(key);

    variables[key] ??= value;
    resolvedVariables[key] ??= value;
  }

  return resolvedVariables;
}