visitStringInterpolation method

  1. @override
void visitStringInterpolation(
  1. StringInterpolation node
)
override

Implementation

@override
void visitStringInterpolation(StringInterpolation node) {
  final parts = <String>[];
  final variables = <String>[];
  var placeholderIndex = 0;
  var hasOnlyVariables = true;

  for (final element in node.elements) {
    if (element is InterpolationString) {
      final text = element.value;
      if (text.isNotEmpty) {
        parts.add(text);
        hasOnlyVariables = false;
      }
    } else if (element is InterpolationExpression) {
      parts.add('{param$placeholderIndex}');
      variables.add(element.expression.toString());
      placeholderIndex++;
    }
  }

  final content = parts.join();
  if (!hasOnlyVariables && content.isNotEmpty) {
    _addLiteral(node, true, content, variables);
  }
}