Dart Hile Sayfası
Son güncelleme
Hello World ve program yapısı
Her Dart programı üst düzey main fonksiyonunda başlar.
| İşlem | Söz dizimi |
|---|---|
| Giriş noktası | void main() { ... } |
| Bir satır yazdır | print("Hello, World!"); |
| Dize interpolasyonu | print("Hi $name"); |
| İnterpolasyonda ifade | print("Sum: ${a + b}"); |
| Yorum | // this is a comment |
| Çok satırlı yorum | /* ... */ |
| Bir kütüphaneyi içe aktar | import 'dart:math'; |
| Bir dosyayı çalıştır | dart run main.dart |
Değişkenler ve tipler
Dart statik tiplidir ama var ile tipleri çıkarabilir.
| İşlem | Söz dizimi |
|---|---|
| Çıkarımlı değişken | var age = 30; |
| Açık tip | int age = 30; |
| Derleme zamanı sabiti | const pi = 3.14; |
| Çalışma zamanı sabiti | final name = getName(); |
| Temel tipler | int, double, String, bool |
| Dinamik tip | dynamic x = 5; |
| Tip dönüşümü | int.parse("42"), n.toString() |
| Tipi kontrol et | x is String, x as String |
Null safety
Tipler varsayılan olarak null olamaz; null'a izin vermek için ? ekleyin.
| İşlem | Söz dizimi |
|---|---|
| Null olamayan (varsayılan) | int count = 0; |
| Null olabilen tip | String? name; |
| Null'a duyarlı erişim | user?.name |
| Null birleştirme | name ?? "default" |
| Null birleştirmeli atama | name ??= "default"; |
| Null değil iddiası | name! |
| Geç başlatma (late) | late String value; |
| Null'a duyarlı spread | [...?maybeList] |
Dizeler
Dizeler tek, çift ve üçlü tırnağı destekler.
| İşlem | Söz dizimi |
|---|---|
| Uzunluk | s.length |
| Büyük / küçük harf | s.toUpperCase(), s.toLowerCase() |
| İnterpolasyon | "Total: $price" |
| Birleştir | "foo" + "bar" |
| İçerir mi | s.contains("ell") |
| İle başlar / biter mi | s.startsWith("he") |
| Böl | "a,b,c".split(",") |
| Değiştir | s.replaceAll("a", "b") |
| Alt dize | s.substring(0, 3) |
| Kırp | s.trim() |
Koleksiyonlar (List, Map, Set)
Değişmez (literal) söz dizimine sahip üç temel koleksiyon tipi.
| İşlem | Söz dizimi |
|---|---|
| List değişmezi | var nums = [1, 2, 3]; |
| Listeye ekle | nums.add(4); |
| Eriş / uzunluk | nums[0], nums.length |
| Map / where | nums.map((n) => n * 2), nums.where((n) => n > 1) |
| Map değişmezi | var ages = {"Ada": 30}; |
| Map erişimi | ages["Ada"] |
| Set değişmezi | var ids = {1, 2, 3}; |
| Spread operatörü | var all = [...a, ...b]; |
| Koleksiyonda if / for | [if (show) 1, for (n in xs) n] |
Kontrol akışı
Koşullar parantez içine girer; switch desenleri destekler.
| İşlem | Söz dizimi |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Üçlü (ternary) | var r = x > 0 ? "pos" : "neg"; |
| Switch | switch (n) { case 1: ...; default: ... } |
| For döngüsü | for (var i = 0; i < 10; i++) { ... } |
| For-in döngüsü | for (var item in items) { ... } |
| forEach | items.forEach((x) => print(x)); |
| While döngüsü | while (x < 100) { ... } |
| Do-while | do { ... } while (x < 100); |
| Break / continue | break;, continue; |
Fonksiyonlar
Fonksiyonlar birinci sınıftır; ok söz dizimi tek ifadeleri kısaltır.
| İşlem | Söz dizimi |
|---|---|
| Bir fonksiyon tanımla | int add(int a, int b) { return a + b; } |
| Ok fonksiyonu | int square(int x) => x * x; |
| İsteğe bağlı konumsal | void log(String m, [int? code]) { ... } |
| Adlandırılmış parametreler | void box({int w = 0, int h = 0}) { ... } |
| Zorunlu adlandırılmış | void box({required int w}) { ... } |
| Anonim fonksiyon | var f = (x) => x * 2; |
| Argüman olarak geçir | nums.map((n) => n * 2) |
| Typedef | typedef IntOp = int Function(int); |
Sınıflar ve yapıcılar (constructor)
Sınıflar durum ve davranışı tutar; yapıcılar birkaç biçimde gelir.
| İşlem | Söz dizimi |
|---|---|
| Bir sınıf tanımla | class Point { int x; int y; } |
| Yapıcı | Point(this.x, this.y); |
| Adlandırılmış yapıcı | Point.origin() : x = 0, y = 0; |
| Örnek oluştur | var p = Point(1, 2); |
| Metot | double dist() { ... } |
| Getter | int get area => w * h; |
| Kalıtım | class Circle extends Shape { ... } |
| super çağır | super(args) |
| Soyut (abstract) sınıf | abstract class Shape { ... } |
| Arayüz uygula | class Dog implements Animal { ... } |
Async (Future / async-await)
Future'lar daha sonra kullanılabilir olacak değerleri temsil eder; await onlar çözülene kadar duraklatır.
| İşlem | Söz dizimi |
|---|---|
| Async fonksiyon | Future<int> load() async { ... } |
| Bir future'ı await et | var data = await load(); |
| Bir değer döndür | Bir async fonksiyonun içinde return 42; |
| Gecikme | await Future.delayed(Duration(seconds: 1)); |
| Hataları işle | try { await load(); } catch (e) { ... } |
| Then zincirleme | load().then((v) => print(v)); |
| Paralel çalıştır | await Future.wait([a(), b()]); |
| Async stream | await for (var x in stream) { ... } |
En çok başvurduğunuz Dart söz dizimi tek sayfada. Bu Dart hile sayfası, temel dil için hızlı bir başvurudur - değişkenler ve tipler, null safety, dizeler, koleksiyonlar, kontrol akışı, fonksiyonlar, sınıflar ve Flutter'ın arkasındaki uygulamaları yazmak için kullandığınız future'lar ve async/await.
Buradaki her şey standart Dart'tır ve resmi SDK üzerinde çalışır. İhtiyacınız olanı kopyalayın ya da her kod parçasını Dart playground'da canlı deneyin - kurulum gerekmez.
Dart hile sayfası SSS
Bu Dart hile sayfası ücretsiz mi?
Dart'ta null safety nasıl çalışır?
int count asla null tutamaz. Null'a izin vermek için bir ? eklersiniz (String? name) ve derleyici sizi null durumunu işlemeye zorlar. Yardımcılar bunu özlü kılar: null'a duyarlı erişim için ?., yedek bir değer için ?? ve emin olduğunuzda bir değerin null olmadığını iddia etmek için !. Bu, null hatalarını çalışma zamanı yerine derleme zamanında yakalar.Future nedir ve async ile await nasıl çalışır?
Future, bir ağ çağrısının sonucu gibi daha sonra kullanılabilir olacak bir değeri temsil eder. Bir fonksiyonu async olarak işaretlemek await kullanmanızı sağlar; bu da future tamamlanana kadar çalışmayı duraklatır ve ardından size değeri verir - böylece yukarıdan aşağıya senkron kod gibi okunan asenkron kod yazarsınız. Hataları işlemek için await'leri try/catch ile sarın.