Flutter: UI Login Screen Challenge

Muhammet ÖMER
Flutter Türkiye
Published in
3 min readDec 10, 2019
Uygulama Ekran Görüntüsü

Merhabalar,

Flutter denince akla gelenlerden ilki genelde “Expressive, beautiful UIs” olur. O güzel tasarımlarınızı Flutter’da uygulamak mümkün hale geliyor. Bunun yanı sıra akıllara “Peki kompleks tasarımları nasıl yaparız?” diye bir soru geliyor. Bu kompleks tasarımların çözümlerini bulmaya çalıştığım bir template uygulama yapmaya karar verdim. Uygulama GitHub hesabımda mevcut.

Kod kod kod diyenleri şöyle alalım :)

https://github.com/mukireus/flutter_ui_template_login

Bu yazımda

  • UI Login tasarımları nereden bulabilirsiniz?
  • UI Login ekranları nasıl kodluyorum?

konu başlıklarından bahsedeceğim.

Tasarımları Nereden Bulabilirsiniz?

vb. sitelerden “Free” olanları indirip Adobe XD uygulamasında açıyorum. “XD .Sketch uzantılı dosyaları destekliyor.”

Örnek bir tasarım bulalım:

Behance sayfasından “Free Login” search ettiğimde karşıma bu sonuç çıktı.
Örnek olarak birisini açtım.

Ve kontrol ediyorum tasarım sahibi herhangi bir tasarım dosyası paylaşmış mı? Tasarım dosyası yok ise renk paletleri, font tipi vb. paylaşmış mı?

En önemlisi kullanmamız için izin vermiş mi?

Bu adımları kontrol ettikten sonra kodlama kısmına geçiyorum.

Nasıl Kodluyorum?

Her yeni ekran eklediğimde bu sayfaya gelerek yeni bir nesne oluşturuyorum.

Burada her sayfa için yeni bir nesne oluşturmanın en büyük artısı, bir değişiklik yapıldığında tüm nesneleri etkilemesi ve hızlı bir değişiklik sonucu vermesi.

Bu sayfada, uygulama açıldığında ekranların listelenmesi için her ekranı bir listeye ekliyorum. Böylelikle her yeni ekran eklediğimde ana ekranda görünmesini sağlıyor.

Her yeni ekran için tasarımların renk kodlarını ve içerdikleri Text’ler için değişken oluşturuyorum.

Değişkenleri tanımlarken her sayfada ayrı ayrı tanımlama yapıyordum ve bazen istemeden de olsa aynı tanımlamaları yapıyordum. Bu yaptığım “Clean Code” temellerine uymuyordu. Bunu düzeltmek için “UI Helper” fikrini öğrendim. Böyle bir değerli fikri bana öğrettiği için Veli Bacık abime buradan teşekkür etmek istiyorum.

Burada UIHelper sınıfımızın amacı ise her seferinde aynı değişkenleri tekrar tekrar yazmaktan kaçınmak.

Yeni nesnemi oluşturduktan sonra yeni bir sayfada Stateful widget ekliyorum.

stf komutu ile hızlıca ekledik
Login Page Template Code
Tasarımımız bu şekilde. (Tasarım bana aittir)

Burada kodlamaya başlamadan önce en uygun hangi widget ile yazabileceğimizi düşünüyoruz.

Ben bu tasarımda böyle bir tercih yaptım:

ListView yerine SingleChildScrollView widget’ını tercih etmemin en temel sebebi herhangi bir durumu tekrarlamıyor olmam.

Column tercih etme sebebim ise widget’ları sıralamam için kolaylık sağlaması. Property’leri ile istediğiniz sonucu elde edebilirsiniz.

Ve genellikle Custom olarak kendi widget’larımı oluşturmaya özen gösteriyorum. Böylelikle kodları tekrarlamaktan kaçınıyorum.

Diğer sayfalar içinde aynı yöntemleri izleyerek tasarımlarını çabucak oluşturabiliriz. Her gün yeni bir sayfa eklemeye çalışıyorum. Daily challenge yaparak kendimi geliştirmeye çalışıyorum.

Yazıyı okumak için zaman ayırdığınız için teşekkürler, umarım faydalı olmuştur.

Uygulamayı incelemek isteyenler için tekrardan github repo:

https://github.com/mukireus/flutter_ui_template_login

Bu makalemi yazmamı öneren Beyza Sunay Güler’e teşekkür etmek istiyorum.

Ve ayrıca teşekkür ederim:

Bana bu adreslerden ulaşabilirsiniz:

--

--

Muhammet ÖMER
Flutter Türkiye

Computer Engineer | Mobile Application Developer | Traveler