25 – Dart Null Safety | Nullable | Non-Nullable

Yazımızın içeriğini aşağıda video olarak izleyebilirsiniz.

Null Safety dart diline 2,12 sürümüyle birlikte gelmiştir.

Bu özellik kod yazarken hata yapma ihtimalimizi oldukça düşürür. Nasıl trafikte trafik işaretleri bizim kaza yapmamızı azaltıyorsa null safety de kodlarımızı daha kontrollü yapmamızı hatalı işlemlerimizi önler.

Null demek boş değer hatta değeri olmayan demek. Safety ise güvenlik, emniyet anlamlarına gelir. Yani null safety dersek boş olma güvenliği gibi bir anlam çıkar. Dart birçok yazılım dilinde olduğu gibi bizim değerlerimizi null bırakmamızı istemez ve programımızın daha doğru kodlara sahip olması için bir güvenlik önlemi alır.

Evet eğer güncel SDK yı kurduysanız siz de artık null safety ile birlikte çalışacaksınız.

Burada önemli iki kavram var. Bunu iyi anlamamız gerekiyor. Nullable (null olabilir), non-nullable (null olamaz). Bizim tanımladığımız değişkenler varsayılan olarak non-nullable dır, yani null değer atanamaz. Şimdi biz String kelime=null; dersek hata alırız. Peki bunu nullable yapabilir miyiz? Yani null değer alabilir mi?

Evet, eğer biz değişkenimize söz verirsek, merak etme biz sana daha sonra bir değer atayacağız ya da sen null bir değersin ama kontrolüm altındasın.

Nasıl mı? Değişkenimizin yanına soru işareti koyarak. String? kelime=null; artık hatamız gitti. Peki ama ne dedik burada? Dedik ki sen artık nullable sın ve null olabilirsin. Artık daha dikkatli olmamız lazım. null değerler programımızda hatalara neden olabilir.

Aşağıdaki örneğimizde değişken tanımladık ve bunlar varsayılan olarak non-nullable yani null olamazlar ama biz yaptık. Hatayı bir görelim.

dart-null-safety-01

Peki ya biz değişkenlerimizi nullable yapsak, değişken tiplerimizin sağ yanına soru işareti koyarak null değer alabilir yapsak ne olacak? Aşağıdaki resme bir bakalım.

dart-null-safety-02

Tamam yukarıdaki resme bakarsak int tipinde olan non-nullable değişkenimizi, int? nullable yaptık yani artık null değer alabiliyor ama bu sefer aşağıda bize uyarı verdi. Diyor ki iyi tamam yukarısı null olabilirde ben nasıl işlem yapıcam? Aslında oldukça haklı. Peki biz desek yok sen illaki çalış ben sonra kontrolünü yapıcam, değer atayacağım, işte ozaman print ifadesindeki değişkenlerimize ! ünlem işareti ekleyeceğiz. Aşağıdaki resme bir bakalım.

dart-null-safety-03

Biz yukarıda bize uyarı veren print içerisindeki değişkenlere ünlem işareti koyarak susmalarını söyledik. O da bizi dinledi ama program şu anda hatalı. Çalışırsa null olduğu için işlem yapamaz ve hata verecektir. Şimdi biz artık daha dikkatli olmalıyız.

Biz burada verileri kendimiz veriyoruz. Her şey kontrolümüz altında, ya internetten veri alıyor olsak ve o anda internette bir sorun oluşsa?

O zaman bu tip verileri kontrol altında tutmalıyız. Peki ama nasıl? Örneklerle açıklayalım. Aşağıdaki resme bir göz atalım.

dart-null-safety-04

Yukarıdaki örnek işimizi çözüyor, istersek aşağıda resimdeki gibi varsayılan değer de atayabiliriz.

dat-null-safety-05

Şimdi aşağıda bir fonksiyon içerisinde kullanalım. if ile kontrol edelim ve null değer olursa else çalışsın ve varsayılan sıfır döndürsün.

dat-null-safety-06

Ya da aşağıda resimde ki gibi varsayılan değer atayabiliriz.

dat-null-safety-07

Birde null safety ile gelen late anahtar kavramı var. Bir değişken tanımlarken tipinin önüne koyuyoruz ve diyoruz ki biz buna değerini sonra vereceğiz.

dart-null-safety-08

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir