A veces veo esto
List list = [];
Luego list..add(color)
¿Cuál es la diferencia al usar 1 punto ( .) y 2 puntos ( ..)?
A veces veo esto
List list = [];
Luego list..add(color)
¿Cuál es la diferencia al usar 1 punto ( .) y 2 puntos ( ..)?
Respuestas:
..se conoce como notación en cascada . Le permite no repetir el mismo objetivo si desea llamar a varios métodos en el mismo objeto.
List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);
// with cascade
List list = [];
list
..add(color1)
..add(color2)
..add(color3)
..add(color4);
Es el operador en cascada de Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
resulta en l1ser una lista[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
da como resultado un error, porque .add(0)devuelvevoid
..(en el ejemplo anterior) se refiere new List(), mientras que .(en el segundo) se refiere al valor de retorno de la parte anterior de la expresión.
..se introdujo para evitar la necesidad de regresar thisen todo tipo de métodos, como add()poder usar una API de manera fluida.
.. proporciona esto fuera de la caja para todas las clases.
newes ahora opcional. ..se refiere a la lista devuelta por new List<int>()y permite invocar múltiples métodos como si add(0) addAll(...)no se repitiera, l1.y es la instancia de lista creada a la que se asigna l1, no el valor de retorno del último método en la cadena ( addAll(...)). ¿Responde esto a tu pregunta?
newes opcional comenzando con Dart 2.0, acabo de confundirme con el newcontexto anterior y gracias por su explicación.
..add(6)es como l1.add(6), .add(6)es como l1.add(5).add(6). add(5)retornos voidy no se puede llamar add()envoid
Las cascadas (..) le permiten realizar una secuencia de operaciones en el mismo objeto. lea el documento para más detalles
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
El ejemplo anterior es equivalente a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClickno se traduce a button.classes.onClick?
..Se conoce como el operador en cascada en dardo.
Le permite utilizar más de una operación de subsecuencia:
Ejemplos:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Aquí hay otro ejemplo
.. (in former example) refers to new List(), ¿quiere decir que estamos creando una nuevaListcuando estamos usando..NO en mi opinión? Tunewpalabra me confundió , ¿es realmente NUEVO o estás hablando denewpalabras clave aquí?