Merhaba arkadaşlar yeni projelerim için Flutter öğrenmeye başladım. Flutter'da dart dili kullanılarak uygulama geliştiriliyor. Dart dilinin temelini, mantığını ve ne olduğunu dokümantasyonlardan özetlediğim kadarıyla aşağıda bulacaksınız.

Dart programlama dili: Temeller ve detaylar.

Dart, Google tarafından geliştirilen, modern ve açık kaynaklı bir programlama dilidir. Hem basit Widget'lar oluşturmak için kullanılan basit söz dizimi hem de daha karmaşık uygulamaların geliştirilmesi için güçlü araçlar sunar. Bu metinde, dart programlama dilinin temel bileşenleri ve detayları ele alınacaktır.

1. Veri tipleri ve değişkenler

Dart programlama dilinde, farklı veri tipleri ve değişkenler kullanılır. Temel veri tipleri şunlardır:

Int: Tamsayı değerleri temsil eder. Örneğin: int age = 30;
Double: Ondalık sayı değerleri temsil eder. Örneğin: double Pi = 3.14;
String: Metin değerleri temsil eder. Örneğin: string name = "John";
Bool: Mantıksal (boolean) değerleri temsil eder. Örneğin: bool isadult = true;

Ayrıca, Dart'ta var anahtar kelimesiyle tür belirtilmeden değişken tanımlamak mümkündür. Örneğin: Var count = 10;

2. Fonksiyonlar

Fonksiyonlar, belirli bir işlevi yerine getirmek için kullanılan bloklar halinde kod parçalarıdır. Dart programlama dilinde, fonksiyonlar birinci sınıf nesnelerdir, yani diğer fonksiyonların parametreleri olarak kullanılabilir veya değişkenlere atanabilirler.

2.1. Parametreler:

Bir fonksiyon, belirli işlemleri gerçekleştirmek için gerekli olan parametreleri alabilir. Parametreler, fonksiyonun parantezleri içinde belirtilir.

Kod:
void greet(string name) {

 print("hello, $name!");

}

void main() {

 greet("John"); // "hello, John!"

}

Yukarıdaki örnekte, greet adında bir fonksiyon tanımlanmıştır. Bu fonksiyon, bir name parametresi alır ve bu parametreyle birlikte bir selam mesajı yazdırır.

2.2. Dönüş değeri:

Bir fonksiyon, belirli bir işlemi tamamladıktan sonra bir değer döndürebilir. Dönüş değeri, fonksiyonun tanımında belirtilen veri tipine sahip olabilir veya Void olarak belirtilebilir.

Kod:
int add(int A, int b) {

 return a + b;

}

void main() {

 int result = add(3, 5);

 print(result); // 8

}

Yukarıdaki örnekte, add adında bir fonksiyon tanımlanmıştır. Bu fonksiyon, iki parametre alır ve bu parametrelerin toplamını döndürür.

2.3. Opsiyonel parametreler:

Fonksiyonlar, opsiyonel parametreler alabilir. Opsiyonel parametreler, fonksiyon çağrıldığında verilebilir veya verilmeyebilir.

Kod:
void greet(string name, [String? message]) {

 if (message!= null) {

 print("$message, $name!");

 } else

{

 print("hello, $name!");

 }

}

void main() {

 greet("John"); // "hello, John!"

 greet("John", "welcome"); // "welcome, John!"

}

Yukarıdaki örnekte, greet adında bir fonksiyon tanımlanmıştır. Bu fonksiyon, bir isim ve isteğe bağlı olarak bir mesaj alır. Mesaj parametresi, köşeli parantez içinde belirtilmiştir ve isteğe bağlıdır.

2.4. İsimlendirilmiş parametreler:

Fonksiyonlar, isimlendirilmiş parametreler alabilir. Bu parametreler, fonksiyon çağrılırken isimleri belirtilerek iletilir.

Kod:
void greet({required string name, string? Message}) {

if (message!= null) {

 print("$message, $name!");

 }

else

 {

 print("hello, $name!");

 }

}

void main() {

 greet(name: "John"); // "hello, John!"

 greet(name: "John", message: "welcome"); // "welcome, John!"

}

Yukarıdaki örnekte, greet adında bir fonksiyon tanımlanmıştır. Bu fonksiyon, bir isim ve opsiyonel bir mesaj alır. Parametreler, fonksiyon çağrılırken isimleri belirtilerek iletilmiştir.

Dart programlama dilinde fonksiyonlar, kodunuzu modüler hale getirmenize, tekrar kullanılabilir parçalar oluşturmanıza ve daha okunabilir kod yazmanıza olanak tanır. Fonksiyonlar, çeşitli parametre türlerini, dönüş değerlerini ve opsiyonel parametreleri destekleyerek çok çeşitli senaryolara uyum sağlarlar.

Sınıflar:

Sınıflar, dart programlama dilinde nesne yönelimli programlamanın temel yapı taşlarıdır. Bir sınıf, nesnelerin (objelerin) bir kalıbını tanımlar. Her nesne, bir sınıfın bir örneğidir ve bu nesneler belirli özellikleri (alanlar) ve davranışları (metotlar) içerir.

Kod:
Class person {

 // Alanlar (fields)

 String name;

 İnt age;



 // Kurucu metot (constructor)

 Person(this. Name, this. Age);



 // Metotlar.

 Void greet() {

 Print("hello, my name is $name and ı am $age years old.");

 }

}



Void main() {

 // Person sınıfından bir nesne oluşturma.

 Var person = person("John", 30);



 // Nesne yöntemi çağırma.

 person.greet(); // "Hello, my name is John and I am 30 years old."

}

Yukarıdaki örnekte, person adında bir sınıf tanımlanmıştır. Bu sınıf, name ve age adında iki alan (field) içerir ve person sınıfından bir nesne oluşturulurken bu alanlara değer atanır. Ayrıca, greet adında bir metot (method) tanımlanmıştır ve bu metot, sınıfın içindeki alanları kullanarak bir selam mesajı yazdırır.

2.3. Operatörler

Dart programlama dilinde çeşitli operatörler bulunur. Operatörler, çeşitli işlemleri gerçekleştirmek için kullanılır ve değerler arasında ilişki kurar. Dart'ın operatörleri arasında aritmetik, atama, karşılaştırma, mantıksal ve bit düzeyi operatörler bulunur.

Kod:
void main() {

 // Aritmetik operatörler.

 İnt a = 10;

 İnt b = 5;

 Print(a + b); // toplama.

 Print(a - b); // çıkarma.

 Print(a * b); // çarpma.

 Print(a / b); // bölme.



 // Atama operatörleri.

 İnt C = 20;

 C += 5; // C = C + 5

 C -= 3; // C = C - 3

 C *= 2; // C = C * 2

 C /= 4; // C = C / 4



 // Karşılaştırma operatörleri.

 Print(a == b); // eşit mi?

 Print(a!= b); // eşit değil mi?

 Print(a > b); // büyük mü?

 Print(a < b); // küçük mü?

 Print(a >= b); // büyük veya eşit mi?

 Print(a <= b); // küçük veya eşit mi?


 // Mantıksal operatörler.

 Bool X = true;

 Bool y = false;

 Print(X && y); // ve (and)

 Print(X || y); // veya (or)

 Print(!X); // değil (not)

}

2.4. Kontrol yapıları

Kontrol yapıları, programın akışını kontrol etmek için kullanılır. Dart programlama dilinde, if-else ifadeleri, Switch-case ifadeleri ve döngüler gibi çeşitli kontrol yapıları bulunur.

Kod:
Void main() {

 // İf-else ifadeleri.

 İnt score = 85;

 İf (score >= 90) {

 Print("grade: A");

 } Else if (score >= 80) {

 Print("grade: B");

 } Else if (score >= 70) {

 Print("grade: C");

 } Else {

 Print("grade: F");

 }

 // Switch-case ifadeleri.

 String day = "monday";

 Switch (day) {

 Case "monday":

 Print("ıt's monday.");

 Break;

 Case "tuesday":

 Print("ıt's tuesday.");

 Break;

 Default:

 Print("ıt's another day.");

 }

 // Döngüler.

 For (int i = 1; i <= 5; i++) {

 Print(i);

 }

 İnt count = 0;

 While (count < 3) {

 Print("count: $count");

 Count++;

 }

 Do {

 Print("count: $count");

 Count--;

 } While (count > 0);

}

Yukarıdaki örneklerde, if-else ifadeleriyle bir not durumuna karşılık gelen bir not verilmiş, Switch-case ifadeleriyle bir gün belirlenmiş ve döngülerle belirli sayıda tekrar eden işlemler gerçekleştirilmiştir. Bu kontrol yapıları, programların akışını kontrol etmek ve belirli koşullara bağlı olarak farklı işlemler yapmak için kullanılır.
 
Son düzenleyen: Moderatör:
Kotlin karşısında performandı ve uygulama geliştirme hızı nasıl hocam ve multiplatformda nasıl?
 
Kotlin karşısında performansı ve uygulama geliştirme hızı nasıl hocam ve multiplatformda nasıl?
Kötü :rofl:

Flutter’ın yazımı bana çok karışık geliyor. Allah’ımı kaybediyorum, iç içe sürekli. Child içine child içine child.

React Native adamdır, tertemiz. ExpoGo ile Mac olmadan iPhone’da kodunu da calistirabiliyorsun. Mis gibi.
 
Hocam flutter ile entegre kullandıgınızda cross platform işlevi görüp ios android web çıktısı alabilirsiniz tek kod ile aynı kodu farklı şekilde

Evet flutter o konuda biraz karışık