0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #1

Gauloran

Kıdemli Moderatör
7 Tem 2013
8,096
585
local
Merhaba, bu konum Dart programlama dilini 0'dan ileri seviyeye anlatacağım bir konular serisinin daha sonra devamında da Mobil Uygulama Geliştirme serisinin ilk konusu. Flutter framework ile tahminimce 90'dan fazla konu olacak veya daha fazla konu olur tam olarak kestiremiyorum şu an ama ilerde işler karıştığından konu sayısı artabilir bütün seriyi bitirdikten sonra tüm serinin konu linklerini içeren bir rehber konusu açacağım. Öncelikle Flutter kullanacağımız için Dart dilini öğrenmemiz gerekli. Programlama bilenlere de hiç bilmeyenlere de uygun olarak anlatacağım. Aslında International Forum kategorisinde paylaşacağım bir seri olacaktı ama zaten Dart dili ile ilgili Türkçe kaynakların öyle aşırı olmaması da beni öncelikli olarak Türkçe açmaya itti. En basitten başlayacağız OOP'lere kadar geleceğiz package yazmaktan bile bahsedeceğim. Evet genellikle hepimiz Flutter projelerinin arkaplanı diye biliyor evet öyle de diyebiliriz sadece Flutterla alakalı değil tabi backend de yazılabilir vs. 2013 te open source edildi dil evrildi javascriptten kendini kurtarıp oop %100 uyumlu olan ve güncel bir dilde görebileceğiniz birçok özelliği barındıran ve bunların yanında java bilen adamların swift bilen adamlar için nelere hakim olabileceğinizi gösteren uyumlu bir dil diyebiliriz. Dartın kendi sitesine bakabilirsiniz dart.dev/overview kısmından bu dilin size vermiş olduğu bütün her şeyi yazmışlar tabii bu serimde mümkün olduğunca her şeye kendim değinmeye çalışacağım.

Bu seriden sonra böyle tatlı uygulamalar yapabilecek hale geleceksiniz ör: https://www.turkhackteam.org/konular/testlio-mobil-uygulamam.1959119/

g8FFRBzRuBTyu9QjTBPbMpj9JJAucOM-PcT1PxktGSCpQDOQTG2xwB-ebEpBUX6kVeQ_=w1360-h654

Ads-z.png


Birçok şeyden bahsedeceğim bu seride:

- Dart diliyle ilgili temel bilgiler OOP yaklaşımı
-
Flutter widgets
-
Flutter framework NoSQL Veritabanıyla çalışma
-
Özel widget geliştirme
-
Servis kullanımı ve Cache katmanı
-
Http dio gibi packageların kullanımı
- BloC , State yapıları, Localization

ve daha fazlası yine tam olarak sayamıyorum müfredat gibi koyarsam araya bir şeyler sıkıştırmak isteyebilirim o yüzden düzen bozulmasın her konunun ardına #1 #2 koyacağım müfredat sıralaması yapmayacağım o nedenle. Bir süredir Dart ve Flutter ile uğraşıyorum bu yüzden hem kendime tekrar olması açısından hem de yeni başlayanlar için veya Flutter'ı merak edenler için efsane bir kaynak oluşturmak istiyorum amacım bu.

Şimdi bu uzun bir yol dediğim gibi 90 konudan fazla olacağını tahmin ediyorum ama sabırla takip ederseniz konu altında yorumlarınızı da bırakırsanız güzel olur. Çünkü beklediğim kadar ilgi almazsa motivasyon kırıcı olabiliyor ve bu da böyle güzelim serinin iptal edilmesi fikrini akıllara düşürüyor. Devam konularında özellikle konu konu anlatacağım şeylerle ilgili sorular yazabilirim ödev gibi. Öyleyse başlayalım

Dart Nedir?
Öncelikle Dart programlama dilinin ne olduğunu basitçe öğrenelim. Dart, Google'ın oluşturduğu bir programlama dili. Bu dille yazdığımız kodlar sayesinde web siteleri, mobil uygulamalar, masaüstü uygulamaları ve hatta robotlar bile yapılabiliyor. Dart'ın özellikleri sayesinde yazdığımız kodlar hızlı ve performanslı çalışır. Hem de Dart'ın yazım şekli çok kolay ve okunması da rahat. Kısacası, bu dil sayesinde programlama yapmak daha kolay ve daha hızlı diyebiliriz.

Nasıl yükleyebilirim?
Dart dili için aslında aynı javascript çalışma mantığı gibi düşünebilirsiniz herhangi bir build veya compile'a gerek duymuyor doğrudan dartın ilgili yüklemesinden sonra sıkıntı olmuyor. Dart sdk yüklemesi oldukça basit oyun yüklemekten daha kolay.

aşağıdaki 3 dakikalık videoda anlatılmış:

Nereye yazacağım?
macOS ve Linux için de dart.dev/get-dart adresinden birkaç dakikada kurabilirsiniz. diyelim setup kısmında bir sorun yaşadınız dartpad.dev'e giderek online bir şekilde dartı kullanabiliyoruz. Dartpad'te güzel örnekler de var girip incelemenizi tavsiye ederim yok ben uğraşmayağım sen anlatacaksın kafasındaysanız devam edelim. Şimdi dart yazmak için zaten text editörlerin herhangi birisi bizi kurtarıyor ama kullanalım diye vscode Microsoft'un bize vermiş olduğu büyük bir ganimet baya esnek güçlü bir IDE eklentileri vs. çok başarılı. Dart yazmak için de genel Flutter projeleri için de öneririm. IntelliJ de öneriyorum tabi ama neyse sektörde genellikle bunlar kullanılıyor tabii alternatifler yok mu? var ama ne gerek şimdilik bizim derdimiz o değil. Visual studio code kullanalım Visual Studio Code download yazıp direkt girip indirebilirsiniz kurulumu yine basit. Tabii isterseniz kullanmayın konudan okuyup kodları test etmeniz açısından diyorum şart değil yani Dart için. Hiç uğraşamam diyorsanız dartpad'ten online girip çatır çutur yazıp bu seriyi takip edebilirsiniz.

Visual Studio Code kullananlar için notlarımız olsun açısından şöyle bir ayar çekebilirsiniz sağ tıklayıp new folder falan diyerek ayarlayabilirsiniz bu şekilde hafta 1 diye bir klasör oluşturdum ve içerisine new file diyerek start.dart yaptık.

Qe3oT0.png


C# 'tan alışkın olan arkadaşlar bilir aslında genel olarak her dilde bir start noktası olur. Dart projemizin başlangıç noktasını belirlemek için main ile başlanır. Main'in içerisine yazdıklarınız doğrudan aslında kodunuz derlenip sonuç döndürülüyor.

Nedir bu main?

Kod:
void main(){
    print("Merhaba bu benim ilk projem");
}

biz burada ne yaptık? öncelikle öğrenmemiz gereken ve dart tarafında çokça kullanacağımız şey print. Print'in aslında mantığı ben bir mesaj vermek istiyorum mesela ve bu mesajı konsolda görüntülemek istiyorum. Yarın öbür gün bunu Flutter kütüphanesini kullanırken yine aynı mantıkla çalışıyor aslında Print demeyeceğiz de ShowAlert diyeceğiz mesela. Çift tırnakla yazmaya da String tanımlaması diyoruz. Konsola merhaba bu benim ilk projem yazdırıp başladık.

Kod:
void main(){
    print("Hello" + "Turkhackteam"); //Çıktısı HelloTurkhackteam olarak verir
    print(2+3); //sayı toplamak için iki int değer verdik
}

İnt değer ne String değer ne ne oluyor diye şaşırmayalım. Aslında bütün dillerin temel noktası olan veri tiplerinden bahsediyoruz şu an. Örneğin HelloTurkhackteam bir String ve tam sayı olarak verdiğimiz 2 ve 3'ü de int diyebilirsiniz yani Integer. Veri tipleri bize lazım. Verilerimizi saklama ve yönetme imkanı sayesinde çok daha efektif kodlar yazacağız. Variable tanımlamalarını öğrenmemiz gerekiyor. Mesela

Kod:
void main(){
    String merhabaDegiskeni = "merhaba";
    print(merhabaDegiskeni);
}

Şimdi burada bizim yaptığımız bir değişken tanımlaması oldu. merhaba adında String türünde olan bir değişken oluşturduk ve karşısına eşittir demişiz çift tırnakla merhaba stringini vermişiz. Bu değişkene vereceğimiz şey bir sayı olmamalı ki String türünde bir değişken tanımlamak istiyoruz çünkü. Print'in içerisinde kullanmışız yani konsolda "merhaba" yazdırmış olduk. Şimdi kafaların karışmaması için değişken ismine istediğimizi koyabiliriz, önemli olan verinin tuttuğu değer. Yani sadece değere odaklanırsak gidip de merhaba değeri tutan bir değerin adına farklı bir isim verirsek saçma olur bu nedenle değer ile bağlantılı değişken ismi yazmamız efektif kod yazmamız açısından önemli. Örneğin müşterinin parasını tutmak istiyorsak

Kod:
void main(){

    int para = 15; //tamsayi türünde bir değişken tanımladık 15 değerini tutuyor
    print(para);

}

Örneğin biz merhabaDegiskeni ile para adındaki değişkenlerimizi yan yana yazdırmak istiyoruz.

Kod:
void main(){
    print(merhabaDegiskeni + para); //yazarsak hata alırız çünkü basit mantıkla elma ile armut toplanmıyor
    //yani birisi String değer tutuyor diğer int değer tutuyor nasıl toplayacağız?
}

fakat gidip de print(merhabaDegiskeni + " " + "$para"); yazsaydık sıkıntı çıkmayacaktı. Bu arada tek tırnak kullansak da sıkıntı çıkmaz hatta genelde tek tırnak daha çok tercih edilir yani dart bazlı konuşacak olursak. $ işareti ile parayı çağırabiliyoruz. ve onu tırnak içine aldığımızda artık 15 i yazdırılabilir hale getirmiş oluyoruz.

Kod:
//bir örnek yapalım müşterinin adını tutup parasını öğrenip müşteriye merhaba diyip
//merhaba dedikten sonra parasını söyleyip ve +5 tl parasına ekleyelim

void main(){
  print("merhaba");
  //bu arada matematiksel işlemler yaptırmak için ${4+9} kullanabiliyoruz print metodu içerisinde
  //örneğin
  print("${4+9} değerinin sonucu 13'tür");

  int userMoney = 25;
  String userName = "Thtuyesi";
  userMoney = userMoney + 5; //yani adamın varolan parası + 5 tl eklemiş olduk ve userMoney değişkenin değerini güncellemiş olduk
  print("Merhaba $userName $userMoney");
  //yani artık dinamik bir kodumuz oldu eskisine göre. bu müşteri ismi farklı bir veri kaynağından da geliyor olabilirdi

  //mesela adamın parasını azaltalım
  userMoney = userMoney -10;
  print("Paranız değer kaybetti $userMoney");

  //aslında userMoney i tekrar tekrar yazmak yerine kısayol olsun şöyle de yapabiliriz
  userMoney+=5; //userMoney'nin varolan değerine 5 ekle demiş olduk

  //diyelim ki küsüratlı bir para var dartta double kullanırız genellikle Dartta double da bir veritipi küsüratlar içindir
  double ThtUserMoney = 5.5;
  ThtUserMoney = ThtUserMoney/2; //ThtUserMoneyi 2 ye bölüp değeri güncelledik

  userMoney = userMoney/2; //bu hata verir dart tarafında çünkü bir int yani tam sayı veri tipini 2 ye bölüyoruz küsuratlı çıkabilir dartta bunu yapmaz ama çözmek için
  userMoney = userMoney ~/2; //bu değeri böl tam sayı olarak alt değeri ata demiş oluyoruz tilde işareti ile bu şekilde hata almayız dart bazlı

  //bölme çarpma toplama çıkartma operatörleri sırasıyla / * + -

}

şimdi birazcık daha aşina olmak için örnekler yapalım. // olarak yazdığım yerler yorum satırı bu arada açıklama olsun diye yazdım.

Kod:
void main(){

  //nesnelerin güvenlikli bir şekilde olması vs dynamic olmaması ne tipinde olduğunda belli olması
  //nesnelerin birbiriyle haberleşmesi vb. bir çok konulara ileride geleceğiz

  String userName = "ali";

  var userName2 = "mehmet";
  //userName2 mehmet'i atıyor değerin String olduğunu anlıyor dil. var diyerek tanımlamalar yapabiliriz yani.
  //tek sıkıntı kod okunabilirliği açısından sıkıntılar oluşuyor veri türlerini belirtmemiz bizim için daha iyi ama
  //var olarak da direkt çok düşünmeden tanımlayabiliriz. variable bizim bildiğimiz türlerden farklı değil aldığı değere göre belirliyor türü
  //sonuç olarak bunlar değişken ve değişebilir değerlerini güncelleyebiliyoruz


  //misal bizim bir değişkenimiz olsa ve bu değişkenin değerinin müdahale edilemese yani bu değişkenin değerinin değiştirilememesini istiyorsak
  final int sabitPara = 100;
  //final tanımladık istediğimiz şey sabitPara adlı verinin değişmemesini istiyoruz

  //sektörde const diye bir kullanım da mevcut tabiiki
  const String sabitIsim = "sabitisim";
  //böyle bir sabit tanımlaması yapabiliriz değiştirilemez bu da

  //Final ve Const'ın farkı nedir?
  //final uygulama çalıştığında runtimedaki son değerini alır uygulama çalıştı ekran gözüktü o anki değerini alır
  //yani o runtime sürecinde gelecek bir değeri final'a atayabiliriz

  //ama constta proje başlarken kod compile oldu o neyse değeri o. böyle de bir farkı var final ve const bol bol kullanacağız

  const String bankaIsmi = "ozel banka";
  final String user1 = "bank 1 musteri"; //const da yapabilirdik ama calısan bir mobil uygulama yazarken vs. final daha cok kullaniriz
  double user1Money = 100.00;
  const String user2 = "bank 2 musteri";
  int user2Money = 500;

  user2Money = user2Money - user1Money.toInt(); //haydaa birisi double birisi int nasıl olacak?
  //yapmamız gereken şey toInt metodunu kullanmak toInt metodu user1Money 100.00 yani double bir değeri int e cast etmeye yarıyor
  //artık hata almayız. user1Money diye yazsaydık hata alırdık

  print("user 2 money: $user2Money"); //konsolda goster

  //özellikle nesne tanımlarken bir şeyi tanımlarken variable olarak kullanılan kavramlarda
  //tanımlama yaparken kirmiziAraba seklinde tanımlarız ilk kelime kucuk harfle başlar ikinci gelen mantıklı kelimenin ilk harfi büyük
  //bunu bir kodlama raconu olarak düşünebiliriz.
  //pascalcase falan gibi şeyler de var bir google larsaniz garip tartışmalar dönüyor

}

Hatalarım olabilir kusura bakmayın. Bir çok hata yapacağız fakat sonuç olarak bu bizi sağlam mobil uygulamalar geliştirmekten alıkoymayacak. Çok çok ufak bir başlangıç yaptık dart diliyle, bir sonraki konuda devam edeceğim. Muhtemelen günden güne paylaşacağım okuduğunuz için teşekkür ederim. Umarım bir şeyler katabilirim yorumlarınızı eksik etmeyin özellikle seriyi takip edecek olanların her konu altına yorum atmasını istiyorum.
 

ruhadamkun

Üye
11 Şub 2012
177
3
ANKARA / İST
Merhaba, bu konum Dart programlama dilini 0'dan ileri seviyeye anlatacağım bir konular serisinin daha sonra devamında da Mobil Uygulama Geliştirme serisinin ilk konusu. Flutter framework ile tahminimce 90'dan fazla konu olacak veya daha fazla konu olur tam olarak kestiremiyorum şu an ama ilerde işler karıştığından konu sayısı artabilir bütün seriyi bitirdikten sonra tüm serinin konu linklerini içeren bir rehber konusu açacağım. Öncelikle Flutter kullanacağımız için Dart dilini öğrenmemiz gerekli. Programlama bilenlere de hiç bilmeyenlere de uygun olarak anlatacağım. Aslında International Forum kategorisinde paylaşacağım bir seri olacaktı ama zaten Dart dili ile ilgili Türkçe kaynakların öyle aşırı olmaması da beni öncelikli olarak Türkçe açmaya itti. En basitten başlayacağız OOP'lere kadar geleceğiz package yazmaktan bile bahsedeceğim. Evet genellikle hepimiz Flutter projelerinin arkaplanı diye biliyor evet öyle de diyebiliriz sadece Flutterla alakalı değil tabi backend de yazılabilir vs. 2013 te open source edildi dil evrildi javascriptten kendini kurtarıp oop %100 uyumlu olan ve güncel bir dilde görebileceğiniz birçok özelliği barındıran ve bunların yanında java bilen adamların swift bilen adamlar için nelere hakim olabileceğinizi gösteren uyumlu bir dil diyebiliriz. Dartın kendi sitesine bakabilirsiniz dart.dev/overview kısmından bu dilin size vermiş olduğu bütün her şeyi yazmışlar tabii bu serimde mümkün olduğunca her şeye kendim değinmeye çalışacağım.

Bu seriden sonra böyle tatlı uygulamalar yapabilecek hale geleceksiniz ör: https://www.turkhackteam.org/konular/testlio-mobil-uygulamam.1959119/

g8FFRBzRuBTyu9QjTBPbMpj9JJAucOM-PcT1PxktGSCpQDOQTG2xwB-ebEpBUX6kVeQ_=w1360-h654

Ads-z.png


Birçok şeyden bahsedeceğim bu seride:

- Dart diliyle ilgili temel bilgiler OOP yaklaşımı
-
Flutter widgets
-
Flutter framework NoSQL Veritabanıyla çalışma
-
Özel widget geliştirme
-
Servis kullanımı ve Cache katmanı
-
Http dio gibi packageların kullanımı
- BloC , State yapıları, Localization

ve daha fazlası yine tam olarak sayamıyorum müfredat gibi koyarsam araya bir şeyler sıkıştırmak isteyebilirim o yüzden düzen bozulmasın her konunun ardına #1 #2 koyacağım müfredat sıralaması yapmayacağım o nedenle. Bir süredir Dart ve Flutter ile uğraşıyorum bu yüzden hem kendime tekrar olması açısından hem de yeni başlayanlar için veya Flutter'ı merak edenler için efsane bir kaynak oluşturmak istiyorum amacım bu.

Şimdi bu uzun bir yol dediğim gibi 90 konudan fazla olacağını tahmin ediyorum ama sabırla takip ederseniz konu altında yorumlarınızı da bırakırsanız güzel olur. Çünkü beklediğim kadar ilgi almazsa motivasyon kırıcı olabiliyor ve bu da böyle güzelim serinin iptal edilmesi fikrini akıllara düşürüyor. Devam konularında özellikle konu konu anlatacağım şeylerle ilgili sorular yazabilirim ödev gibi. Öyleyse başlayalım

Dart Nedir?
Öncelikle Dart programlama dilinin ne olduğunu basitçe öğrenelim. Dart, Google'ın oluşturduğu bir programlama dili. Bu dille yazdığımız kodlar sayesinde web siteleri, mobil uygulamalar, masaüstü uygulamaları ve hatta robotlar bile yapılabiliyor. Dart'ın özellikleri sayesinde yazdığımız kodlar hızlı ve performanslı çalışır. Hem de Dart'ın yazım şekli çok kolay ve okunması da rahat. Kısacası, bu dil sayesinde programlama yapmak daha kolay ve daha hızlı diyebiliriz.

Nasıl yükleyebilirim?
Dart dili için aslında aynı javascript çalışma mantığı gibi düşünebilirsiniz herhangi bir build veya compile'a gerek duymuyor doğrudan dartın ilgili yüklemesinden sonra sıkıntı olmuyor. Dart sdk yüklemesi oldukça basit oyun yüklemekten daha kolay.

aşağıdaki 3 dakikalık videoda anlatılmış:

Nereye yazacağım?
macOS ve Linux için de dart.dev/get-dart adresinden birkaç dakikada kurabilirsiniz. diyelim setup kısmında bir sorun yaşadınız dartpad.dev'e giderek online bir şekilde dartı kullanabiliyoruz. Dartpad'te güzel örnekler de var girip incelemenizi tavsiye ederim yok ben uğraşmayağım sen anlatacaksın kafasındaysanız devam edelim. Şimdi dart yazmak için zaten text editörlerin herhangi birisi bizi kurtarıyor ama kullanalım diye vscode Microsoft'un bize vermiş olduğu büyük bir ganimet baya esnek güçlü bir IDE eklentileri vs. çok başarılı. Dart yazmak için de genel Flutter projeleri için de öneririm. IntelliJ de öneriyorum tabi ama neyse sektörde genellikle bunlar kullanılıyor tabii alternatifler yok mu? var ama ne gerek şimdilik bizim derdimiz o değil. Visual studio code kullanalım Visual Studio Code download yazıp direkt girip indirebilirsiniz kurulumu yine basit. Tabii isterseniz kullanmayın konudan okuyup kodları test etmeniz açısından diyorum şart değil yani Dart için. Hiç uğraşamam diyorsanız dartpad'ten online girip çatır çutur yazıp bu seriyi takip edebilirsiniz.

Visual Studio Code kullananlar için notlarımız olsun açısından şöyle bir ayar çekebilirsiniz sağ tıklayıp new folder falan diyerek ayarlayabilirsiniz bu şekilde hafta 1 diye bir klasör oluşturdum ve içerisine new file diyerek start.dart yaptık.

Qe3oT0.png


C# 'tan alışkın olan arkadaşlar bilir aslında genel olarak her dilde bir start noktası olur. Dart projemizin başlangıç noktasını belirlemek için main ile başlanır. Main'in içerisine yazdıklarınız doğrudan aslında kodunuz derlenip sonuç döndürülüyor.

Nedir bu main?

Kod:
void main(){
    print("Merhaba bu benim ilk projem");
}

biz burada ne yaptık? öncelikle öğrenmemiz gereken ve dart tarafında çokça kullanacağımız şey print. Print'in aslında mantığı ben bir mesaj vermek istiyorum mesela ve bu mesajı konsolda görüntülemek istiyorum. Yarın öbür gün bunu Flutter kütüphanesini kullanırken yine aynı mantıkla çalışıyor aslında Print demeyeceğiz de ShowAlert diyeceğiz mesela. Çift tırnakla yazmaya da String tanımlaması diyoruz. Konsola merhaba bu benim ilk projem yazdırıp başladık.

Kod:
void main(){
    print("Hello" + "Turkhackteam"); //Çıktısı HelloTurkhackteam olarak verir
    print(2+3); //sayı toplamak için iki int değer verdik
}

İnt değer ne String değer ne ne oluyor diye şaşırmayalım. Aslında bütün dillerin temel noktası olan veri tiplerinden bahsediyoruz şu an. Örneğin HelloTurkhackteam bir String ve tam sayı olarak verdiğimiz 2 ve 3'ü de int diyebilirsiniz yani Integer. Veri tipleri bize lazım. Verilerimizi saklama ve yönetme imkanı sayesinde çok daha efektif kodlar yazacağız. Variable tanımlamalarını öğrenmemiz gerekiyor. Mesela

Kod:
void main(){
    String merhabaDegiskeni = "merhaba";
    print(merhabaDegiskeni);
}

Şimdi burada bizim yaptığımız bir değişken tanımlaması oldu. merhaba adında String türünde olan bir değişken oluşturduk ve karşısına eşittir demişiz çift tırnakla merhaba stringini vermişiz. Bu değişkene vereceğimiz şey bir sayı olmamalı ki String türünde bir değişken tanımlamak istiyoruz çünkü. Print'in içerisinde kullanmışız yani konsolda "merhaba" yazdırmış olduk. Şimdi kafaların karışmaması için değişken ismine istediğimizi koyabiliriz, önemli olan verinin tuttuğu değer. Yani sadece değere odaklanırsak gidip de merhaba değeri tutan bir değerin adına farklı bir isim verirsek saçma olur bu nedenle değer ile bağlantılı değişken ismi yazmamız efektif kod yazmamız açısından önemli. Örneğin müşterinin parasını tutmak istiyorsak

Kod:
void main(){

    int para = 15; //tamsayi türünde bir değişken tanımladık 15 değerini tutuyor
    print(para);

}

Örneğin biz merhabaDegiskeni ile para adındaki değişkenlerimizi yan yana yazdırmak istiyoruz.

Kod:
void main(){
    print(merhabaDegiskeni + para); //yazarsak hata alırız çünkü basit mantıkla elma ile armut toplanmıyor
    //yani birisi String değer tutuyor diğer int değer tutuyor nasıl toplayacağız?
}

fakat gidip de print(merhabaDegiskeni + " " + "$para"); yazsaydık sıkıntı çıkmayacaktı. Bu arada tek tırnak kullansak da sıkıntı çıkmaz hatta genelde tek tırnak daha çok tercih edilir yani dart bazlı konuşacak olursak. $ işareti ile parayı çağırabiliyoruz. ve onu tırnak içine aldığımızda artık 15 i yazdırılabilir hale getirmiş oluyoruz.

Kod:
//bir örnek yapalım müşterinin adını tutup parasını öğrenip müşteriye merhaba diyip
//merhaba dedikten sonra parasını söyleyip ve +5 tl parasına ekleyelim

void main(){
  print("merhaba");
  //bu arada matematiksel işlemler yaptırmak için ${4+9} kullanabiliyoruz print metodu içerisinde
  //örneğin
  print("${4+9} değerinin sonucu 13'tür");

  int userMoney = 25;
  String userName = "Thtuyesi";
  userMoney = userMoney + 5; //yani adamın varolan parası + 5 tl eklemiş olduk ve userMoney değişkenin değerini güncellemiş olduk
  print("Merhaba $userName $userMoney");
  //yani artık dinamik bir kodumuz oldu eskisine göre. bu müşteri ismi farklı bir veri kaynağından da geliyor olabilirdi

  //mesela adamın parasını azaltalım
  userMoney = userMoney -10;
  print("Paranız değer kaybetti $userMoney");

  //aslında userMoney i tekrar tekrar yazmak yerine kısayol olsun şöyle de yapabiliriz
  userMoney+=5; //userMoney'nin varolan değerine 5 ekle demiş olduk

  //diyelim ki küsüratlı bir para var dartta double kullanırız genellikle Dartta double da bir veritipi küsüratlar içindir
  double ThtUserMoney = 5.5;
  ThtUserMoney = ThtUserMoney/2; //ThtUserMoneyi 2 ye bölüp değeri güncelledik

  userMoney = userMoney/2; //bu hata verir dart tarafında çünkü bir int yani tam sayı veri tipini 2 ye bölüyoruz küsuratlı çıkabilir dartta bunu yapmaz ama çözmek için
  userMoney = userMoney ~/2; //bu değeri böl tam sayı olarak alt değeri ata demiş oluyoruz tilde işareti ile bu şekilde hata almayız dart bazlı

  //bölme çarpma toplama çıkartma operatörleri sırasıyla / * + -

}

şimdi birazcık daha aşina olmak için örnekler yapalım. // olarak yazdığım yerler yorum satırı bu arada açıklama olsun diye yazdım.

Kod:
void main(){

  //nesnelerin güvenlikli bir şekilde olması vs dynamic olmaması ne tipinde olduğunda belli olması
  //nesnelerin birbiriyle haberleşmesi vb. bir çok konulara ileride geleceğiz

  String userName = "ali";

  var userName2 = "mehmet";
  //userName2 mehmet'i atıyor değerin String olduğunu anlıyor dil. var diyerek tanımlamalar yapabiliriz yani.
  //tek sıkıntı kod okunabilirliği açısından sıkıntılar oluşuyor veri türlerini belirtmemiz bizim için daha iyi ama
  //var olarak da direkt çok düşünmeden tanımlayabiliriz. variable bizim bildiğimiz türlerden farklı değil aldığı değere göre belirliyor türü
  //sonuç olarak bunlar değişken ve değişebilir değerlerini güncelleyebiliyoruz


  //misal bizim bir değişkenimiz olsa ve bu değişkenin değerinin müdahale edilemese yani bu değişkenin değerinin değiştirilememesini istiyorsak
  final int sabitPara = 100;
  //final tanımladık istediğimiz şey sabitPara adlı verinin değişmemesini istiyoruz

  //sektörde const diye bir kullanım da mevcut tabiiki
  const String sabitIsim = "sabitisim";
  //böyle bir sabit tanımlaması yapabiliriz değiştirilemez bu da

  //Final ve Const'ın farkı nedir?
  //final uygulama çalıştığında runtimedaki son değerini alır uygulama çalıştı ekran gözüktü o anki değerini alır
  //yani o runtime sürecinde gelecek bir değeri final'a atayabiliriz

  //ama constta proje başlarken kod compile oldu o neyse değeri o. böyle de bir farkı var final ve const bol bol kullanacağız

  const String bankaIsmi = "ozel banka";
  final String user1 = "bank 1 musteri"; //const da yapabilirdik ama calısan bir mobil uygulama yazarken vs. final daha cok kullaniriz
  double user1Money = 100.00;
  const String user2 = "bank 2 musteri";
  int user2Money = 500;

  user2Money = user2Money - user1Money.toInt(); //haydaa birisi double birisi int nasıl olacak?
  //yapmamız gereken şey toInt metodunu kullanmak toInt metodu user1Money 100.00 yani double bir değeri int e cast etmeye yarıyor
  //artık hata almayız. user1Money diye yazsaydık hata alırdık

  print("user 2 money: $user2Money"); //konsolda goster

  //özellikle nesne tanımlarken bir şeyi tanımlarken variable olarak kullanılan kavramlarda
  //tanımlama yaparken kirmiziAraba seklinde tanımlarız ilk kelime kucuk harfle başlar ikinci gelen mantıklı kelimenin ilk harfi büyük
  //bunu bir kodlama raconu olarak düşünebiliriz.
  //pascalcase falan gibi şeyler de var bir google larsaniz garip tartışmalar dönüyor

}

Hatalarım olabilir kusura bakmayın. Bir çok hata yapacağız fakat sonuç olarak bu bizi sağlam mobil uygulamalar geliştirmekten alıkoymayacak. Çok çok ufak bir başlangıç yaptık dart diliyle, bir sonraki konuda devam edeceğim. Muhtemelen günden güne paylaşacağım okuduğunuz için teşekkür ederim. Umarım bir şeyler katabilirim yorumlarınızı eksik etmeyin özellikle seriyi takip edecek olanların her konu altına yorum atmasını istiyorum.
Harika olmuş ellerine sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.