Ana içeriğe atla

Mobil Uygulama Geliştirme: FLUTTER


Son zamanlarda merak sardığım konulardan biri de mobil uygulama geliştirme oldu. Küçücük bir uygulamanın bile verdiği çıktı ile mutlu olduğumu görünce mobil uygulama geliştirmekten zevk aldığımı hissettim. Araştırıp öğrenmeye başladım ve kısa sürede uygulama geliştirip ve bu uygulamayı kullanmak gerçekten güzel bir duyguydu.

Şimdi sizlere geliştirdiğim basit bir Todo uygulamasından bahsedeyim.

Flutter SDK ve Dart programlama dilini kullanarak çapraz platform çalışan yapılacaklar listesi uygulamasıdır. Bu uygulamada, verileri devamlılığını sağlamak için SQLite3 kullandım. Uygulama hem iOS hem de Android işletim sisteminde çalışmaktadır.

Neden Flutter’ı Seçtim?
· Flutter ile uygulamanızda yaptığınız bir değişikliği hot reload özelliği ile hızlı bir şekilde görebilirsiniz. Yani compile etmek(derlemek) için artık uzun süreler beklemeye gerek yok. Örnek vermek gerekirse Flutter ile varsayılan olarak gelen increment uygulamasını android sdk ile çalıştırmak ortalama 3 dakika iken, Flutter ile bu süre 10 saniye gibi bir süreye düşüyor.
· Flutter kütüphanesi ile hazır gelen birçok widget’ı (ekran aracını) sıfırdan kodlamanıza gerek kalmadan kullanıcı arayüzünüzü oluştururken kullanabilirsiniz.
· Android ve ios için ayrı ayrı uygulama geliştirmek yerine yazacağınız tek kod ile iki platforma da uygulama oluşturabilirsiniz.
· Performans konusunda da oldukça başarılı olduğundan kullanıcıya uygulama içinde akıcı bir deneyim sunabilirsiniz.
· Uygulamanın görsel dizaynıyla pek uğraşmak istemiyorsanız varsayılan olarak gelen android için Material Design ve ios için Cupernito-style temalarıyla uygulamanızın başlangıçtan itibaren iyi görünen bir tasarıma sahip olmasını sağlayabilirsiniz.

Todo Uygulaması
· Uygulama gün içerisinde zaman dilimlerine göre Günaydın,İyi Günler,İyi akşamlar şeklinde karşılama mesajlarıyla karşımıza çıkıyor.
· Metin Kutusu içerisine Todo’larımızı yazdıktan sonra klavyeden yapılacaklar listesine imkan veriyor.
· Tamamladığımız Todo’larımızın üzerine dokunduğumuzda Tamamlandı Listesi’ne üzeri çizilmiş şekilde ekleniyor.
· Yanlışlıkla Tamamlandı Listesi’ne eklenen Todo’larımızın üzerine tekrar dokunduğumuzda Yapılacak Listesi’ne tekrar alınabiliyor.
· Action Bar altındaki taşan eylemler menüsünde Tamamladığımız Todo’larımızın tamamını temizleyebiliyoruz.
· Aynı zamanda taşan eylemlerden Takip Et ve Hakkımda kısmından gerekli yönlendirmelerle ilgili sayfalara ulaşabiliyoruz.
Kullandığım Widgetlar:
· MaterialApp : Malzeme tasarımı uygulamaları için yaygın olarak gerekli olan bir dizi widget'ı saran kullanışlı bir widget. AnimatedTheme ve GridPaper gibi malzeme tasarımına özgü işlevler ekleyerek bir WidgetsApp üzerine kuruludur.
· Scaffold : Temel malzeme tasarımı görsel yerleşim yapısını uygular.Bu sınıf, çekmeceleri, çerez çubuklarını ve alt sayfaları göstermek için API'ler sağlar.
· Container : Bir konteynır önce çocuğu dolgu ile (dekorasyonda bulunan herhangi bir kenarlıkla şişirilir) kuşatır ve daha sonra yastıklı ölçüde ek sınırlamalar uygular (genişlik ve yüksekliği boş değilse, sınır olarak birleştirir). Konteynır daha sonra kenar boşluğundan tarif edilen ilave boş alan ile çevrelenir.
· Column : Bir Sütun içeriği kullanılabilir alan miktarını aştığında, Sütun taşar ve içerik kırpılır. Hata ayıklama modunda, sorunu göstermek için taşan kenarda sarı ve siyah çizgili bir çubuk oluşturulur ve Sütunun altına ne kadar taşmanın algılandığını belirten bir mesaj yazdırılır.
· Row : Satır ilk olarak ilk çocuğu logonun istediği boyutta yerleşmesini ister. Logonun bir kenarından 24 pikseldir. Bu, bir sonraki çocuk için çok fazla alan bırakır. Daha sonra satır, bir sonraki çocuğa, metne, en iyi olduğunu düşündüğü boyutta yerleşmesini ister.
· Expanded : Satır, Sütun veya Flex öğesinin alt öğesini, çocuğun kullanılabilir alanı doldurması için genişleten widgettir. Genişletilmiş widget'ı kullanmak Satır, Sütun veya Flex öğesinin alt öğesini ana eksendeki kullanılabilir alanı dolduracak şekilde genişletir (örneğin, bir Satır için yatay olarak veya bir Sütun için dikey olarak). Birden fazla çocuk genişletilirse, kullanılabilir alan esnek faktöre göre aralarında bölünür.
· LimitedBox : Boyutunu yalnızca kısıtlanmamış olduğunda sınırlayan bir kutudur. Bu widget'ın maksimum genişliği kısıtlanmamışsa, alt genişliği maxWidth ile sınırlıdır. Benzer şekilde, bu widget'ın maksimum yüksekliği sınırlanmamışsa, çocuğunun yüksekliği maxHeight ile sınırlıdır.Bunun, çocuğa sınırsız ortamlarda doğal bir boyut verme etkisi vardır. Örneğin, normalde olabildiğince büyük olmaya çalışan bir widget'a maxHeight sağlayarak, widget normal olarak üst öğesine sığacak şekilde boyutlandırır, ancak dikey bir listeye yerleştirildiğinde verilen yüksekliği alır.
· IntrinsicHeight : Çocuğunu çocuğun iç yüksekliğine göre boyutlandıran bir widget.Bu sınıf, örneğin sınırsız yükseklik mevcut olduğunda ve aksi takdirde kendisini daha makul bir boyuta getirmek için sınırsız olarak genişletmeye çalışan bir çocuk istiyorsanız yararlıdır.Bu sınıf nispeten pahalıdır, çünkü son yerleşim aşamasından önce spekülatif bir düzen geçişi ekler. Mümkün olduğunca kullanmaktan kaçının. En kötü durumda, bu widget, ağacın derinliğinde O (N²) bir düzene neden olabilir.
· InkWell : Dokunmaya yanıt veren bir malzemenin dikdörtgen alanıdır. Bu widget'ın sıçrayanları kırpmayan bir varyantı için InkResponse'ye bakın.InkWell widget'ında, ata olarak bir Material widget'ı bulunmalıdır. Malzeme widget'ı, mürekkep reaksiyonlarının gerçekten boyandığı yerdir. Bu, Materyal mürekkebi dağıtarak dokunuşlara gerçekten tepki veren malzeme tasarım öncülüyle eşleşir.
Uygulamadan Görüntüler
Uygulama Arayüzü

Yapılacaklar ve Tamamlanların Gösterilmesi

Action Bar ve Taşan Eylemler

Yorumlar

Bu blogdaki popüler yayınlar

İNSAN SİNİR SİSTEMİNİN TAKLİDİ: YAPAY SİNİR AĞLARI

Yapay sinir ağları; beynin bir işlevi yerine getirme yönteminin matematiksel olarak modellenmesi ile tasarlanan sistemlerdir. Yapay sinir ağları, paralel dağıtılmış ağlar, bağlantılı ağlar, nuromorfik ağlar gibi adlarla da tanımlanmaktadır. Yapay sinir ağlarının ortaya çıkışından kısaca bahsetmem gerekirse; ilk yapay sinir ağı modeli 1943 yılında bir sinir hekimi olan Warren McCulloch ve bir matematikçi olan Walter Pitts tarafından “ Sinir Aktivitesinde Düşüncelere Ait Bir Mantıksal Hesap ( A Logical Calculus of Ideas Immanent in Nervous Activity )” başlıklı makale ile ortaya çıkarılmıştır. Öncelikle insanlarda bulunan sinir hücresinin yapısını ele alalım. Dentrites (Dendritler): Dendritler dışarıdan uyartıları alan ve hücre gövdesine ileten yapılardır. Dendritlerin çok sayıda olması, hücrelerin pek çok nörondan sinyal alma kapasitesini arttırır. Nucleus (Çekirdek): Akson boyunca işaretlerin periyodik olarak yeniden üretilmesini sağlayan yapılardır. Axon (Akson): Akson,

Davranışların İnterneti : IoB (Internet of Behaviors)

Bu yazımda yeni teknoloji trendleri içinde gördüğüm ve hayatımızda örnekleri olan fakat önümüzdeki zamanlarda daha çok hayatımızda olacak bir teknoloji konusu olan Davranışların İnterneti’ni ele alacağım.   Davranış İnterneti, çok çeşitli yeni veri kaynaklarıyla sonuçlanan cihazların birbirine bağlanması olan Nesnelerin İnterneti'nden (IoT) uzanır. Bu, geri bildirim döngüleri aracılığıyla eylemleri ve davranışları etkilemek için hem dijital hem de fiziksel dünyalardan gelen verileri bir araya getirir. IoB'nin yaptığı, bu verileri anlamlandırmak ve çevrimiçi satın alma veya belirli bir markayı takip etme gibi belirli insan davranışlarına eklemektir. Davranışın İnterneti, doğrudan bireylere odaklanan mevcut teknolojileri birleştirir. Yüz tanımadan konum izlemeye kadar, elde edilen verileri nakit satın alma veya cihaz kullanımı gibi ilişkili davranışsal olaylara bağlar. Kullanıcıların çevrimiçi etkinliklerinden toplanan verileri davranışsal psikoloji perspektifinden anlamak, tam o