Lección 4 · 4 de 20
Cadenas e interpolación · Dart
Trabaje con texto en Dart: unir cadenas con +, interpolación con $ y ${}, caracteres por posición, escapes, cadenas de varias líneas y el operador *.

Las cadenas se pueden unir con `+`, como en 'Hello, ' + name + '!', pero en Dart lo natural es la interpolación: 'Hello, $name from $city!' mete los valores dentro del texto sin cortarlo. Es más corto y se lee mejor.
`${...}` admite cualquier expresión: ${age + 1} hace una suma, ${name.length} lee la longitud de la cadena y ${city.toUpperCase()} llama a un método que la pasa a mayúsculas. Con un nombre suelto basta $; en cuanto hay un punto o una operación, hacen falta las llaves.
Una cadena es una secuencia de caracteres y `[índice]` da uno de ellos. El primero está en la posición 0 y el último, en name.length - 1: por eso name[0] es L y name[name.length - 1] es a.
La barra invertida escribe tal cual caracteres que tienen otro significado: \' es un apóstrofo dentro de comillas simples y \$ es un signo de dólar, no una interpolación. Dentro de comillas dobles, \" escribe comillas dobles.
Con tres comillas (''') la cadena puede ocupar varias líneas, y la interpolación sigue funcionando: así se compone el billete ticket. Por último, ***** repite una cadena: '=' * 20 dibuja una línea de veinte signos.
Código · main.dart
void main() { String name = 'Lucia'; String city = "Seville"; // + joins strings; $name puts a variable inside the text. print('Hello, ' + name + '!'); print('Hello, $name from $city!'); // ${...} takes any expression, not only a name. int age = 29; print('Next year $name will be ${age + 1}.'); print('$name has ${name.length} letters.'); print('Shouting: ${city.toUpperCase()}'); // [index] gives one character; the first one is at 0. print('First letter: ${name[0]}, last: ${name[name.length - 1]}'); // A backslash writes quotes and dollars as they are. print('It\'s \$12 for the ticket.'); print("She said: \"See you in $city\""); // Three quotes allow text on several lines. String ticket = '''Passenger: $nameAge: $ageTo: $city'''; print(ticket); // * repeats a string. print('=' * 20);}Salida · dart run main.dart
Hello, Lucia! Hello, Lucia from Seville! Next year Lucia will be 30. Lucia has 5 letters. Shouting: SEVILLE First letter: L, last: a It's $12 for the ticket. She said: "See you in Seville" Passenger: Lucia Age: 29 To: Seville ====================
Para recordar
'$name'y'${expresión}'meten valores en el texto.- Las llaves hacen falta si hay un punto o una operación.
texto[0]es el primer carácter;texto.length, cuántos hay.\',\"y\$escriben esos caracteres tal cual.'''permite cadenas de varias líneas.
Ejercicio
Cree las variables product, units y price y escriba con una sola cadena interpolada una línea como 3 x notebook = 7.50 euros, con el total calculado dentro de ${}.