Mustafa’s Zero to Hero Story-Part1

Mustafa KARA
Flutter Students Club
8 min readFeb 1, 2022

--

Herkese Selamlar 👋,

her şey’e başlamadan önce biraz kendimden bahsetmek istiyorum :). Ben Mustafa KARA, Google DSC Hasan Kalyoncu Lideriyim. Lideri Olduğum Üniversite de Yazılım Mühendisliği birinci sınıf öğrencisiyim.

İlk Medium yazım’da sizlere Flutter’da gelişimimi, takıldıklarımı ve genel olarak kafamda oluşanları sizlere aktaracağım umarım işinize bir nebzede olsa yarar. Çok az dert yanmalar olabilir, umarım sıkılmadan okursunuz :D.

Bu yazımda sizlere anlatacağım kısımlar: Flutter’a başlamaya nasıl karar verdim, Flutter Kurulumunda yaşadıklarım, ve Dart dilindeki değişkenlerden bahsedeceğim (Variables).

Flutter’a başlamam aslında sanılanın aksine şans değil tamamen yönelim meselesiydi yani gerçekten mobil alana ilgili olduğum için Google teknolojisi olan Android yada Flutter benim için biçilmiş kaftandı.

2021 Yaz aylarında aklımda bir Startup(girişimcilik) projesi vardı. Bu projeyi Teknofest ve Solution Challange’a katmanın mutlak bir yolunu bulmam lazımdı. Bunu arkadaş çevremin içinde bulunduğu bir ekiple beraber yürütmek istiyordum. Okul yoğunlugundan dolayı bir türlü başlayamadım fakat bunun da şöyle bir pozitif tarafından bakıyorum.

Okulumda öğrendiğim ilk yazılım dili C. Her ne kadar benzetmeseler de bana kalırsa C ve Dart oldukça birbirine benziyor. Bunun bana şu pozitif yanı oldu istemsiz olarak Dart’ın temellerini bir nebzede olsa kazanmıştım. Artık yapmam tek gereken Dart’ın derinliklerine inip Flutter’a uyarlamaktı. Şu an organizatör olduğum FlutterFest ve FlutterHackathon bu süreci baya hızlandırdı diyebilirim.

Bu yazımda Flutter nedir, Dart nedir çok derin bahsetmek istemiyorum, Core Member’ı olduğum Flutter Student Club Medium’un da bunları çok detaylı anlatan arkadaşlarım var kesinlikle onları okumanızı tavsiye ederim . Benim ki daha ziyade biraz sohbet havasında olacak.

Flutter Kurulumu:

Bu başlık beni en çok eğlendiren kısımlardan oldu. Flutter dışardan gördüğüm kadarıyla biraz bilgisayar seçiyor :). Nasıl olduğunu çok anlamamakla beraber, benim bilgisayarıma kurmam 2 günümü aldı. Galiba ilk kez kurduğum için Google DSC Flutter mentörlerlerinin kafasını şişirdiğim doğrudur.

Mobil geliştiriciliği ile ilgili daha önce herhangi bir bilgim olmadığı için birden fazla yol denedim, biraz dümeni olmayan gemi gibiydim. Her acemi developer (geliştirici) adayı gibi ben de, youtube’den “Flutter Nasıl Yüklenir ” gibi bir arama yaptım. Yaptığım en temiz hatalardan biri buydu doğrusu çünkü Flutter platformu her geçen gün güncelleniyor ve temelleri değişmesede ufak tefek kurulum farkları olabiliyordu fakat ben bunu fark edebilecek bilgiye sahip olmadığım için kafadan 2–3 yıl önce yüklenen videolara girip bataklığın içine düşmüştüm :). En başta “Flutter.dev” websitesine girseydim belkide bu kadar karın ağrısı çekmeyezdim. Flutter’a yeni başlayan biri olarak şunu bir dip not olarak eklemek istiyorum; ingilizce bilmek şart desem yanlış olmaz. Nasıl yani mustafa ? Dediğini sanki duyar gibiyim. Türkçe kaynak genel olarak yazılım dünyasında samanlıkta iğne aramaktan farksız bence. Bu Türkiye’de bulunan eğitmenlere veya geliştiriciler ile ilgili bir durum değil tabi ki, bunu matematikle anlatmak istiyorum.

Türkçe Kaynaklar: 2+3=5

Yabancı Kaynaklar: √50+31=9

Umarım bu örnek size ne demek istediğimi anlatmıştır yani demek istediğim şu bulduğunuz Türkçe kaynaklar ya biraz eski nesil ya da sadece temellerini anlatıp geçmiş, yazılı ya da sözlü fark etmiyor maalesef.

Çok geç fark etsem de “Flutter.dev” web sitesinde dokümantasyon aracılığı ile eğer biraz yabancı diliniz varsa, Flutter’ı öğrenmenin biraz zor ama çok doğru bir yolu. Eğer her tipik Türk insanı gibi “Bilmediğim kelime çok” gibi mazeretlerde bulunuyorsanız, Google Chrome uzantılar hemen yardımınıza koşuyor.

Misal Dart.dev’de bir sayfadasınız, her şey mükemmel ilerlerken birden karşınıza bir kelime çıktı, anlamını bilmediğimizi düşünelim.

Yapmanız Gereken tek şey üzerine çift basıp üzerinde çıkan simgeye basmak :)

Hayır hayır büyücü değilim sadece deniyorum :) Sadece ingilizce değil bir çok dili destekliyor bu arada aynı zamanda okunuşlarını da dinleyebilirsiniz. ( Keşke sponsor olsalar ama değiller ) Uzantının ismi: Rememberry — Translate and Memorize. Uzantının bir kaç keşfedemediğim tarafı daha var orası da sizde artık .

Esas konumuza dönecek olursak, Flutter kurulumu kesinlikle bana kalırsa “Flutter.dev” kullanmanızı tavsiye ediyorum.

Flutter Website

Takip ettiğim kadarı ile bazı eğitmenler eğitimlerine dartpad üzerinden devam ediyorlardı fakat bu tarafa çok ısınamadım doğrusu, belki de kullanmayı çok bilmediğimden.

DartPad

Olayı Visual Studio Code ile devam ettirmeye karar verdim. Biraz debelenmeler sonucunda emülatör’üm de dahil olmak üzere her şey stabildi. Peki sırada ki neydi ?

Dart.dev’e Giriş:

Sanırım çok sınırdan döndüğüm yerlerden biri yine buraydı. Galiba insan oğlunun kendine yaptığı en büyük hata tembellik. Ben de bunu galiba yaptım biraz. İlk günlerde Udemy üzerinden bulduğum bir kurs ile yola çıktım, her şey düzgün gittiğini düşünsemde bir şeyler sürekli bende havada kalıyordu. Bunun temel sebebi nesne tabanlı bir programlama dili daha önce kullanmadığım için olabilir. Bir çok defa: “Galiba Flutter öğrenemeyeceğim, hani Yazılım Mühendisliği okuyorum ama ekmek yiyemeyeceğiz anlaşılan” dediğim çok oldu.

Bunun çaresini yine aslında Flutter Fest sayesinde çözdüm.Flutter Fest’in 3. eğitim gününde Gürkan Fikret Günak eğitim esnasında “Flutter.dev” ve “Dart.dev” in içerisinde çok düzgün bir biçimde dokümantasyonlar olduğunu ve çok açıkladığını gösterince, anlaşılan rotamız belli oldu diye tekrardan yola koyuldum. Ha bu arada Udemy’i kötülemek için tabi ki değil bu yazı, lütfen lütfen yanlış anlaşılmasın :).

Dart.dev’de ilerleyiş hızım kesinlikle daha yavaş farkındayım ama bu bence belli bir yere kadar devam ediyor olacak. Bunu araba sürmeye benzetebiliriz bana kalırsa; nasıl araba sürmeyi yeni yeni kavrayan bir insan ilk başlarda yavaş yavaş ilerleyip zamanla olayın dinamiklerini kavrayıp, her şeyi bir refleks olarak yapıyor ve hızlandırıyorsa bende böyle olacağını düşünüyorum.

Anlatacağım konular daha ziyade benim biraz kişisel çıkarımlarım olacağını daha önce sizlere söylemiştim. Hayatta genel mottom değişiklik göstersede söyleceğim biraz ağır basıyor: Hızlı Düşün, Hızlı Anlat! Bu kelimelerden anlamlı bir söz anlamak zor farkındayım ama Albert Einstain’ın şu sözleri bence size ufak bir ip ucu verir: “Bir Şeyi 6 Yaşındaki Bir Çocuğa Anlatamıyorsanız, Siz De Anlamamışsınız Demektir!” Tabi bu söz biraz fazla iddialı yani en azından Flutter için :D.

Demek istediğim şu; sizlere olayın en detayına girip, benim gibi yeni başlayacak birinin gözünü korkutmak istemem. Mümkün oldukça kolay ve anlaşılır anlatacağım.

Sizlere Dart Nedir anlatmak yerine Kadriye Çakmak’ın Medium yazılarından ufak bir alıntı yapacağım.

Dart Nedir?

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları Ecma tarafından standart haline getirilen açık kaynaklı bir programlama dilidir. Google desteklediği Flutter SDK sayesinde Dart dilini kullanarak artık hem iOS hem de Android uygulamalar geliştirebiliyorsunuz.

Mobil uygulamaların dışında Dart programlama diliyle birlikte; web, sunucu ve IoT cihazlar için uygulamalar geliştirebilirsiniz. Dart dili sınıf tabanlı , tek kalıtıma sahip kısacası nesne tabanlı , C programlama dilinin kod dizilimine benzemektedir.

Bunun gibi bir çok yazı için ;

Flutter Student Club Medium

Kadriye Çakmak Medium

Dart Degişkenler ( Variables )

Değişkenler’i kendi arasında 3 temel gruba ayırarak ilerlemek galiba en basiti olacaktır. Bunlar : Numbers, String ve Booleans. Sakin kalalım hepsini teker teker anlatacağım 💃.

Numbers:

Türkçesini düşündüğümüzde bize bir fikir veriyor aslında. “Sayı saklayan veriler” gibi Türkçeye çevirmek çokta yanlış olacağını sanmıyorum. Yazacağımız programda sayı değişkenlerini tanımlamamızı sağlayan veri tipleri diyebiliriz. Bunlar; int ve double olmak üzere ikiye ayrılıyor. Çok basit anlatmak gerekirse bunları şöyle izah edebilirim.

Int: Tam sayılarda kullanılıyor.

double: Tam olmayan, ondalıklı sayılarda kullanılıyor.

Bunların kaç bit olduğunu, bitlik ve baytlık hesaplara girmeyi düşünmüyorum fakat bu önemli olmadığı için değil kafanızı karıştırmamak için doğrusu.

Dip not: Her iki veri tipide matematik fonksiyonlarını (+,-,/,*) destekler.

Hadi birazcık Kodlama Kısmına Geçelim :)

Her programın bir ana fonksiyonu olması gereklidir. Aslında tanımlamak o kadar da zor değil .

main(){}

işte bu kadar :)

Ha bu arada bir yandan DartPad’i açsan iyi edersin, boşuna anlatmayalım demi burda aklında bir şeyler kalsın.

DartPad

Buraya kadar geldiysen her şey tamam artık bir Yazılım geliştiricisisin, demek çok isterdim fakat biraz erken davranmış olurum. Hadi Hadi toparlan başlıyoruz.

iki değişken tanımlamak istiyorum, bu değişkenlerden biri tam sayı, biri ondalıklı sayı . İçinden sanki birinci için “int” kullanmalıyız der dediğini duyar gibiyim. Tabi ki doğru hadi tanımlayalım ve matematik fonksiyonlarını kullanalım.

main(){int sayi1=5;double sayi2=13.6;}

Sanırım bu kod biraz olsun kafanızda yıldırımlar oluşturmuştur, çokta at ile deve bir şey değil anlayıp geçmeye bakın :).

STRINGS:

Kısaca özetlemek gerekirse stringlere metinlerimizi saklıyoruz. Dikkat edilmesi gereken şey ise tanımlarken ana fonksiyonumuzun içinde stringlerin baş harfi olan “S” yi büyük harf ve tanımladığınız metini tırnak arasına almak. Nasıl mı ? Hemen açıklayalım.

main() {String metin1=’Mustafa’;String metin2=’KARA’;print(metin1+metin2);}

Umarım burada print kısmında bulunan “+” yi anlamışsınızdır. En basit şekilde bunları birleştir ve yazdır gibi düşünebiliriz.

Bools:

Bilgisayar dili 0 ve 1'ler üzerinden çeşitli kombinasyonlar ile sizin yapmak istediğiniz işlemleri algılar. Bunu anlamanın en güzel yolu ASCII Table’a bakmaktır.

ASCII Table

Bizim tanımlayacağımız bool veri tipi aslında tamamen bunların birer ürünü. True(1) ve False(0) olarak bizlere geri dönüt veren bu veri tipini şu ana kadar gördüğüm kadarı ile ileri konumuz olan Karar Yapılarında çok detaylı şekilde kullanacağız. Yazacağım örneği anlamanız biraz zor olabilir ama yine de bir göz atalım.

Dediğim gibi bunu daha detaylı sonra daha detaylı anlayacağını biliyorum. Şimdilik sadece bu bilgi kafanda bir yerlerde kalması yeterli.

Simple Way:

Bir çok noktadan anladığım kadarı ile bunları yapmanın en kolay yolu “var” tanımlamak.

“var” Her şeyi kendi içerisinde kararlarını verip sizleri yormadan veri tiplerini saklamanıza yarıyor. Aynı zamanda dart dinamik bir yapıya sahip olduğu için “var” ın kıymetini ilerde ki kısımlarda tecrübelerimden bahsedip aktaracağım.

Sizlerin kafasında bir şekil oluşturmak için hemen bir örnek oluşturalım :).

Bu kadar basit aslında, sadece dene.

Özetlemek gerekirse; bu yazımda sizlere dart’da bulunan degişken tiplerini çok yüzeysel, sadece bir ön bilgi niteliğinde aktardım. Bunları okuduktan sonra daha detaylı bilgiye sahip olmanız şart diyebilirim. Sizleri “Dart.dev” e davet ediyorum.

Dart Website

Son Söz ve Kapanış:

Biraz toparlayalım demi, Part-2'de neler geliyor sizlere aktarayım. Aklımda Nasıl sorular var buraya yazalım. Hem yeni başlayanların kafasındaki soruların 1 tanesine bile cevap olabilsem bu durum beni çok mutlu eder.

  • Part 2 gelene kadar Dart dilinin çoğuna hakim olabileceğimi düşünüyorum ama hala bir emulator üzerinden çalışmaya başlamadım. Dart ile Flutter nerede tam birleşiyor acaba?

Medium’a içerik üretmemin temel nedenleri arasında kendi kişisel gelişim yorumlarımı belki de 5 yıl sonra okuduğumda; “ Ya Mustafa tek problem o mu ? Bunları mı problem ediyorsun ? “ diye kendime güleceğim :D.

Bana geri dönüşlerini vermek için Sosyal Medya hesaplarımı ve mail adresimi bırakıyorum. Herhangi bir sorunuz olursa veya Part1 ile ilgili geri dönüşlerinizi bana iletirseniz çok sevinirim.

Part 2'de Görüşmek Üzere….

Instagram

LinkedIn

Gmail: mustafaakaara@gmail.com / mustafa.kara2@std.hku.edu.tr

--

--