As vezes eu vejo isso
List list = [];
Então list..add(color)
Qual é a diferença no uso de 1 ponto ( .
) e 2 pontos ( ..
)?
..
é 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 l1
ser 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 this
em todos os tipos de métodos, como add()
poder usar uma API de maneira fluente.
..
fornece isso imediatamente para todas as classes.
.. (in former example) refers to new List()
, você quer dizer que estamos novamente criando um novoList
quando estamos usando..
na minha opinião NÃO. Fiquei confuso com a suanew
palavra, é realmente NOVO ou você está falando sobrenew
palavras-chave aqui.new
agora é opcional...
refere-se à lista retornada pornew 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ídal1
, 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 onew
contexto acima e obrigado pela sua explicação...add(6)
é comol1.add(6)
,.add(6)
é comol1.add(5).add(6)
.add(5)
retornosvoid
e você não pode chamaradd()
onvoid
O exemplo anterior é equivalente a:
fonte
..onClick
que não se traduz embutton.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().
Aqui está outro exemplo
fonte