As vezes eu vejo isso
List list = [];
Então list..add(color)
Qual é a diferença no uso de 1 ponto ( .) e 2 pontos ( ..)?
As vezes eu vejo isso
List list = [];
Então list..add(color)
Qual é a diferença no uso de 1 ponto ( .) e 2 pontos ( ..)?
Respostas:
..é conhecido como notação em cascata . Ele permite que você não repita o mesmo destino se desejar chamar vários métodos no mesmo 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);
É o operador em cascata da Dart
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
resulta em l1ser uma lista[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
resulta em um erro, porque .add(0)retornavoid
..(no exemplo anterior) refere-se a new List(), enquanto .(no posterior) refere-se ao valor de retorno da parte anterior da expressão.
..foi introduzido para evitar a necessidade de retornar thisem todos os tipos de métodos, como add()poder usar uma API de maneira fluente.
.. fornece isso imediatamente para todas as classes.
newagora é opcional. ..refere-se à lista retornada por new List<int>()e permite chamar vários métodos nela, add(0) addAll(...)sem repetir, l1.e é a instância da lista criada à qual é atribuída l1, e não o valor de retorno do último método na cadeia ( addAll(...)). Isso responde sua pergunta?
newé opcional a partir do Dart 2.0, fiquei confuso com o newcontexto acima e obrigado pela sua explicação.
..add(6)é como l1.add(6), .add(6)é como l1.add(5).add(6). add(5)retornos voide você não pode chamar add()onvoid
Cascatas (..) permitem fazer uma sequência de operações no mesmo objeto. leia o documento para obter detalhes
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
O exemplo anterior é equivalente a:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClickque não se traduz em button.classes.onClick?
..É conhecido como o operador em cascata no dardo.
Ele permite que você use mais de uma operação subsequente:
Exemplos:
banerad..load()..show().
List coursename;
coursename..add("java")..add("flutter" )..add("dart");
Aqui está outro exemplo
.. (in former example) refers to new List(), você quer dizer que estamos novamente criando um novoListquando estamos usando..na minha opinião NÃO. Fiquei confuso com a suanewpalavra, é realmente NOVO ou você está falando sobrenewpalavras-chave aqui.