Flutter'la birlikte programlama yaparken kullandığımız dil hepimizin bildiği gibi Dart dilidir. Ama nedir bu Dart? Biraz ondan bahsedelim. 

Flutter bize geniş ve kaliteli bir tasarım-programlama olanağı sağlasa da burada kullandığımız dilinde bize katkısı oldukça büyüktür. SDK'yı oluşturan Google'ın pek bilinmeyen Dart dilini seçmesinde gözettiği bazı kriteler vardır. 

Öncelikle Google sektördeki rakibine odaklanarak, anlaşılması kolay ve aslında herkesin bir parça bildiği bir dili seçmeyi uygun gördü. Çünkü React Native'de kullandığımız JavaScript yazılımdaki pek çok kişinin aşina olduğu bir dil olduğu için tercihleri ve alışkanlıkları sorgulamayacak basitlikte ve yüksek performansta bir dilin seçilmesi gerekliydi. 

2013 yılında ilk olarak Google tarafından geliştirilen ve daha sonra ECMA tarafından standart haline gelen açık-kaynaklı ve genel amaçlı olan bu Dart dili sadece mobil değil, web, sunucu ve IoT alanlarında da kullanılan bir dil olmaya başladı. 

Java/C gibi dillerde kodlama yapan herkesin syntaxına aşina olduğu bu dil, Flutter programcıları tarafındanda tam destek gördü ve günümüzde Flutter'ın çok başarılı bir SDK olmasında yardımcı oldu. 

Dart dili OOP yani Nesneye Yönelik bir progralama dilidir. Bu özelliği ile sektördeki diğer dillerle olan standartları yakalar ve kendini kanıtlamış olur. Ayrıca değişikliğe kolayca adapte olmasıyla birlikte tasarımın dinamik olmasını sağlar. OOP'nin tüm özelliklerinden faydalanarak mobil tasarımın en iyi şekilde gerçekleştirilmesine yardımcı olur. Dart dilinde Java'daki gibi public/private şeklinde erişim belirleyiciler yoktur. Aslında erişim durumunu Widget ağacından gelen hiyerarşi belirler ve böylelikle tasarımın parçalarına ulaşmak kod parçası tarafından değil Widget mimarisi tarafından kontrol edilir. 

Metodlar ve Constructorlar tüm OOP dilleri gibi Dart dilininde temelini oluşturur. Bir örnek verecek olursak ListView bir Constructor'dır. Arka planda tamamen bizim kodladığımız mantıkta bir Yapıcı çalıştırır. ListView.builder ile ise ListView classının farklı bir yapıcısıdır. Dart dili aynı isimde iki Constructor sevmediği için aynı Class çatısı altında farklı isimlerde Constructorlar tanımlarız. Constructor yapısında Opsiyonel ve Named parametreler vardır. Burada da ListView.builder Named Constructor yapısı olarak karşımıza çıkar. 

Dart dilinde Flutter'da ki Widget mantığı ile OOP dillerinde ki Class mantığının iç içe olduğu bir durum söz konusudur. Her Widget karşımıza birer Class olarak çıkar. Classlar metodları ve özellikleri gruplandırıp bir arada tutarlar ve aslında Flutter'da ki her tasarım parçası da tam olarak bu görevi yerine getirir. 

OOP dillerinde bellekten yer alarak kendimize değişken tanımladığımız yapı; 

var degisken1 = new Degisken(); şeklindedir. Burada aslında Değişken tipinde bir degisken1 adını taşıyan bellek alanı tanımlamış olduk. Şimdi bunun Flutter'da ki karşılığına bakalım. 

return Scaffold ya da return new Scaffold 

Her ikisi syntaxda sorunsuz bir şekilde çalışacaktır. Ama nasıl? Her widget bir classtır ve öyleyse Scaffold'da burada bir class olarak görev yapar. Parantez açarak altında tanımladığımız her yapı Scaffold classının özellikleri ve yapıcılarıdır. 

Dart diline alışmak kesinlikle kolay olsa da dili her açıdan çok daha iyi anladığımızda tasarımın tüm aşamalarının zihnimize çok daha iyi yerleştiğini anlayabiliyoruz. Burada da bize lazım olan şey OOP mantığını Widget mimarisinde kullanmayı çözmek ve çözdükten sonra dilin her özelliğinden faydalanabilmektir. 

İlerleyen yazılarımızda Kalıtım ve Miras mantığınıda incelemeye devam edeceğiz!