What you'll learn:
- Dart Programlama Dili hakkında yer yer ileri düzeye varan bilgiler edineceksiniz.
- Asenkron Programlama dersleri ile Gecikmeli İşlemler (Future), Akış (Stream) temelli uygulamalar ve Paralel Çalışan (Multi Thread) kodlar yazabileceksiniz.
- Programlamanın genel mantığı hakkında bilgi sahibi olacaksınız. Hızlı çalışan, kolay öğrenilen, Google destekli bir programlama dili öğrenmiş olacaksınız.
- Websocket ve HttpServer dersleri ile çok çeşitli Server-Side (Sunucu Taraflı, API vb. gibi) uygulamalar geliştirebileceksiniz.
DART DÜNYASINA HOŞ GELDİNİZ!
DART, Google tarafından geliştirilen genel amaçlı bir programlama dilidir. Dart kullanarak çok kısa bir sürede server kurulumu yapabilir, birçok platformda çalışabilecek web projeleri ve mobil uygulamalar geliştirebilirsiniz. Ayrıca internete bağlanan eşyalar, yani geleceğin teknolojisi olan "Internet Of Things" için de çok hızlı çalışan yazılımlar üretebilirsiniz.
Google, programcıların geçmiş tecrübelerine dayanarak, programlama dillerinin tüm güzel özelliklerini bir araya getirdi ve bir programlama dilinin ihtiyacı olabilecek her şeyi Dart üzerinde topladı. Dart hızlı olduğu kadar, pratik bir (Syntax) yazım diline de sahip... Eğer daha önce C++, C#, Java veya JavaScript dilinde projeler gerçekleştirdiyseniz, Dart programlama dilini öğrenmeniz fazla uzun sürmeyecek, hiçbir yabancılık çekmeyeceksiniz. Dart programlama dilinde çalışmak için, özel bir editör de kullanmanız gerekmiyor. Daha önceden aşina olduğunuz, popüler olan bütün editörleri (VSCode, IntelliJ, Android Studio vb. gibi) Dart projeleriniz için de kullanabilirsiniz.
Bildiğiniz gibi mobil dünya, günden güne çok büyük bir hızla gelişmekte, eskisine göre internette daha fazla zaman geçirmekteyiz. Çünkü artık her yerden internete girebiliyoruz. Bu da mobil uygulamaların hayatımızdaki önemini daha da arttırıyor. Mobil kullanıcı sayısı arttıkça, mobil uygulamalardan beklenen özellikler de artıyor elbette... Mobil uygulamalar, kaliteli bir dizayna sahip olmakla birlikte, çekici animasyonlarla zenginleştirilmiş ve en önemlisi hızlı çalışan yapılar olmak zorunda. Her şey hızlanırken, yavaş çalışan bir uygulamayı hiç kimse kullanmak istemez! Dart, diğer diller ile yapılan birçok (Benchmarking) karşılaştırma testi ile performansını kanıtlamış durumdadır. 2011 yılında doğan Dart, kendisinden yıllar önce oluşturulan bir çok programlama dilinden daha hızlı sonuçlar vermektedir.
Google, Flutter projesi ile özellikle mobil uygulama tasarımında bir devrim meydana getirdi. Flutter ile birçok (Widget) hazır kütüphaneyi kullanarak tasarlayacağınız mobil uygulamada, her platform için ayrı ayrı kod yazmanıza gerek kalmıyor. Oluşturacağınız bir mobil uygulamayı; hem IOS, hem de Android sistemlerde çalıştırabiliyorsunuz. Flutter, Dart alt yapısını kullandığı için hem tasarım olarak, hem de performans olarak çok iyi uygulamaların geliştirilmesini sağlıyor. Bu açıdan Flutter'da mobil uygulama projesi gerçekleştirebilmek için Dart programlama dilinin de çok iyi öğrenilmesi gerekiyor.
En çok yapılan hatalardan biri, Dart programlama dilini iyi öğrenmeden, Flutter üzerinde mobil uygulama geliştirmeye çalışmaktır. Birçok kullanıcı, bir an önce sonuca ulaşmak istediği için Dart Programlama Eğitimi'ni önemli görmüyor veya es geçiyor. Bu çok büyük bir hatadır. Bu eğitim seti ile Flutter'da desktop/mobil uygulama eğitimi almaya hazır hale geliyorsunuz. Çünkü Dart programlama dili iyi öğrenilmeden, Flutter üzerinde yapılacak bir proje, ne yazık ki sonuca ulaşamıyor. Kullanıcıların birçoğu, bir takım görsellerden, buton, menü veya ikonlardan oluşan amaçsız uygulamalar geliştirmekten öteye gidemiyor. Görsel olarak bir şeyler tasarlayabiliyor olmakla, çalışan ve faydalı bir uygulama yapmak aynı şey değildir!
Flutter ile mobil uygulamada bir takım materyalleri kullanarak, çok kısa zamanda şık ve çekici bir sayfa oluşturabilirsiniz. Fakat bu mimarinin arka planında, gerçekleştirilmesi gereken çok fazla iş vardır. Aklınıza gelen bir fikri mobil uygulamaya dökebilmek için tasarımdan önce, yeterli bir programlama bilgisine sahip olmanız gerekiyor.
Dart ile sadece mobil dünyada değil, web tasarım dünyasında da bir adım öndesiniz. Yine Google'ın tasarladığı "Material Design" kütüphanesini hazır olarak hem Flutter'da, hem AngularDart projelerinizde kullanabilirsiniz.
Google'ın, üzerinde çok ciddi yatırımlar yaptığı Dart programlama dili, yeni güncellemelerle günden güne gelişmektedir. Google, bu amaçla hem kendi etkinliklerinde, hem de başka çevrelerce düzenlenen etkinliklerde, hem Dart dilini hem de Flutter'ı tüm dünyaya tanıtma çalışmaları yapıyor.
Google yakın bir zamanda Fuchsia (Fuşya) adlı bir işletim sistemi çıkaracak. Bu işletim sisteminin, tasarım ve performans başta olmak üzere, tüm standartların üzerinde olması bekleniyor. Fuschia işletim sisteminin arayüzü uygulamaları da Flutter ile (Dolayısıyla Dart programlama diliyle) gerçekleştiriliyor.
Fuschia'nın yanı sıra, birçok büyük şirket Flutter ile (dolayısıyla Dart programlama diliyle) şimdiden çalışmaya başlamış durumdadır. Bunların en başında AliBaba geliyor. Milyonlarca kullanıcısı olan AliBaba, yeni mobil uygulamasını Flutter ile tasarladı.
Sözün kısası; Dart, gelecekte internete bağlanan her cihazda kullanılabilir olacak. Bu yönüyle de rakiplerine fark atıyor. Kolay, anlaşılabilir ve sade yazım şekliyle, hiçbir programlama bilgisi olmayan kişilerin de kolayca öğrenebileceği bir yapıya sahip olan Dart için, "geleceğin programlama dilidir" diyebiliriz.
KURS İÇERİĞİ
BÖLÜM 1. SUNUM (Presentation)
1.1. Dart Programlama Dili ve Geleceği
1.2. Neler Öğreneceksiniz?
BÖLÜM 2. KURULUMLAR (Installing)
2.1. Dart SDK Kurulumu
2.2. Visual Studio Code Kurulumu
BÖLÜM 3. DART PROGRAMLAMAYA GİRİŞ (Introduction to Dart)
3.1. VS Code ile ilk kodun çalıştırılması
3.2. DartPad
3.3. PowerShell
3.4. Comments (Yorumlar)
BÖLÜM 4. DEĞİŞKENLER VE TÜRLERİ (Variables and Types)
4.1. Var, String, Num
4.2. Int, Double
4.3. Bool
4.4. Dynamic, Null
4.5. Object ve Metodlar
4.6. Const, Final
BÖLÜM 5. OPERATÖRLER (Operators)
5.1. Aritmetik Operatörler
5.2. Atama Operatörleri
5.3. Arttırma ve Azaltma Operatörleri
5.4. Eşitlik ve İlişkisel Operatörler
5.5. Type Test Operatörleri
5.6. Mantıksal Operatörler
BÖLÜM 6. KOŞULLU İFADELER (Conditional Expressions)
6.1. If Else
6.2. Özel Koşullu İfadeler
6.3. Switch Case
6.4. Assert
BÖLÜM 7. FONKSİYONLAR (Functions)
7.1. Fonksiyon Kavramı
7.2. Fonksiyon Parametreleri (Arguments)
7.3. Pratik Fonksiyon (Fat Arrow)
7.4. Anonim Fonksiyon (Lambda Expression)
7.5. Fonksiyon Hiyerarşisi
BÖLÜM 8. KOLEKSİYONLAR (Collections)
8.1. Iterable
8.2. List
8.3. List Örnekleri
8.4. Unmodifiable List (Değiştirilemez Liste)
8.5. Set
8.6. HashSet
8.7. Queue
8.8. Lazy Iterable Metodları
8.9. Map
8.10. HashMap
8.11. Map Örnekleri
8.12. Unmodifiable Map (Değiştirilemez Map)
8.13. Set (Dart Update 2.2)
BÖLÜM 9. DÖNGÜLER (Loops)
9.1. For Döngüsü
9.2. For In Döngüsü
9.3. ForEach Döngüsü
9.4. While Döngüsü
9.5. Do While Döngüsü
9.6. Break, Continue
BÖLÜM 10. SINIFLAR (Classes)
10.1. Class Benzeri Kullanım
10.2. Class Kavramı
10.3. Constructors (Yapıcı Metodlar)
10.4. Setter, Getter
10.5. Inheritance (Kalıtım)
10.6. Super Constructor
10.7. Initializers (Başlatıcılar)
10.8. Final Initializer
10.9. Factory Constructor
10.10. Abstract Class
10.11. Static
10.12. Interface (Implement Class)
10.13. Operator Metodları
10.14. Comparing Objects (Nesnelerin Karşılaştırılması)
10.15. Singleton
10.16. Mixin
10.17. Enum
BÖLÜM 11. HATA AYIKLAMA (Error Handling)
11.1. Exceptions
11.2. Exception Class
BÖLÜM 12. ASENKRON PROGRAMLAMA (Asynchronous Programming)
12.1. Future (Gecikmeli İşlemler)
12.2. Async Await
12.3. Future Wait
12.4. Future Then
12.5. Timers (Zamanlayıcılar)
12.6. Streams (Akışlar)
12.7. Stream Broadcast
12.8. Stream Transform
12.9. Async* Yield
12.10. Async Await For
12.11. StreamController (Akış Kontrolcüsü)
12.12. Isolates (Multi Threading)
BÖLÜM 13. HAZIR KÜTÜPHANELERİN KULLANIMI (Libraries and Packages)
13.1. Kütüphane Kavramları
13.2. dart:core
13.3. dart:async
13.4. dart:math
13.5. dart:convert
13.6. dart:io >> (Dosyadan Veri Okuma - File Reading)
13.7. dart:io >> (Dosyaya Veri Yazma - File Writing)
13.8. dart:io >> (Klasör/Dizin İşlemleri - Directory)
13.9. File Class, Directory Class Örnekleri
13.10. Package Kurulumu (pubspec.yaml)
13.11. Package: http
13.12. Package: image
BÖLÜM 14. DART SERVER PROGRAMLAMA (Dart Server Programming)
14.1. Standart Input/Output Streams (stdin, stdout, stderr)
14.2. Process Class (Sunucuda Program Çalıştırma - Execute Programs in Server)
14.3. HttpServer Class
14.4. WebSocket
BÖLÜM 15. DART SQL PROGRAMLAMA (Dart SQL Programming)
15.1. Package: mysql1
15.2. Package: dart_sqlite3
BÖLÜM 16. EK KONULAR (Bonus)
16.1. dart2native ile .exe dosyası yapmak