Por que ambos os resultados são impressos da mesma forma?
final list1 = [ "a", "b", "c" ];
final result1 = true ? list1 : list1..removeWhere((e) => e == "a");
print(result1); // prints ["b", "c"]
final list2 = [ "a", "b", "c" ];
final result2 = false ? list2 : list2..removeWhere((e) => e == "a");
print(result2); // prints ["b", "c"]
Isso acontece apenas em condições ternárias. Quando normal, if-else, isso funciona perfeitamente.
O operador ternário é avaliado antes do operador cascata, então basicamente o código é equivalente a
em vez do que você poderia esperar
Consulte: Precedência do operador
porque esse código
devolver-lhe um
list1
. entãolist1
você liga para issolist1..removeWhere((e) => e == "a")
. a mesma história aqui:para verificar isso, você pode colocar a segunda parte entre colchetes: