DEV Community

Cover image for Dart Spread Operator 💫 🌌 ✨
Gülsen Keskin
Gülsen Keskin

Posted on • Edited on

7 5

Dart Spread Operator 💫 🌌 ✨

Spread(...) ve null-aware spread operatörü (...?) bir koleksiyona birden çok değer eklemek için kısa bir yol sağlar.

Örneğin, bir listenin tüm değerlerini başka bir listeye eklemek için spread operatörünü (...) kullanabilirsiniz:

var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
Enter fullscreen mode Exit fullscreen mode

Spread operatörünün sağındaki ifade null olabilirse, null alana duyarlı bir spread operatörü (...?) kullanarak istisnalardan kaçınabilirsiniz:

var list2 = [0, ...?list];
assert(list2.length == 1);
Enter fullscreen mode Exit fullscreen mode

Tek tek öğelerden yeni bir koleksiyon oluşturmak istediğinizde koleksiyon değişmezleri mükemmeldir. Ancak, genellikle bu mevcut öğelerden bazıları zaten başka bir koleksiyonda depolanır.

... map veren bir ifade alır ve bu map'in tüm verilerini yeni map'e ekler.

var items = [2, 3, 4];
var set = { 1, 2, ...items };

Enter fullscreen mode Exit fullscreen mode

çıktı: {1, 2, 3, 4}

Null-aware spread

var oops;
var list = [...oops];
print(list);
Enter fullscreen mode Exit fullscreen mode

çıktı: Uncaught Error: TypeError: null: type 'JSNull' is not a subtype of type 'Iterable'

var oops;
var list = [...?oops];
print(list);
Enter fullscreen mode Exit fullscreen mode

çıktı: []

var things = [2, null, 3];
var more = [1, ...things, 4]; // [1, 2, null, 3, 4].
var also = [1, ...?things, 4]; // [1, 2, null, 3, 4].
Enter fullscreen mode Exit fullscreen mode

Bir dizideki boş öğeleri atlamak istiyorsanız:

var things = [2, null, 3];
var more = [1, ...things.where((thing) => thing != null), 4];
// [1, 2, 3, 4].
Enter fullscreen mode Exit fullscreen mode

sabitler

const list = [2, 3];
const another = [1, ...list, 4]; // [1, 2, 3, 4].
Enter fullscreen mode Exit fullscreen mode

Resources :)
https://github.com/dart-lang/language/blob/master/accepted/2.3/spread-collections/feature-specification.md
https://dart.dev/guides/language/language-tour#spread-operator

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more