Flutter ve Material 3 ile Her Cihaza Uygun Tasarım

Emre Karataş
KoçSistem
Published in
5 min readOct 6, 2023

Bu yazıda Material 3'e eklenen en son özellikleri ve bu özelliklerin daha estetik Flutter uygulamaları tasarlamayı nasıl kolaylaştırdığını inceleyeceğiz.

Material Design mobil, web ve masaüstü uygulamaları için yüksek kaliteli, güzel ekran deneyimleri oluşturmamıza yardımcı olan açık kaynaklı bir Google şirket içi tasarım sistemidir.

Material Design son güncellemesi olan Material 3, geliştiricilerin tüm platformlarda(mobil, web, masaüstü) tutarlı bir tasarımla Flutter uygulamaları oluşturmasına olanak tanır.

Bu yazıda Material 3'ün getirdiği yeni özellikler, M2 ile M3 arasındaki temel farkları ve Flutter uygulamalarımızı Material 3'e nasıl taşıyacağımızı öğreneceğiz.

.

.

Haydi başlayalımmmmm 😎

.

.

Flutter Material 3 Sample App
Flutter Material 3 Örnek Uygulaması

Flutter Uygulamamıza Material 3 Eklenmesi

Material 3'ü uygulamamızda kullanabilmek için MaterialApp içerisindeki “theme” kısmında “useMaterial3” özelliğini true olarak ayarlamamız yeterlidir.

Material 3 Ekleme

.

.

Material 3 Tasarımındaki Yenilikler Neler?

Material 3 ile birlikte Typography/Iconography, ColorScheme, over-scroll stretch efekti gibi Android 12 özellikleri (Ekranı sağa sola yada aşağı yukarı çektiğinizdeki o esnek hareket 🙂), yeni ink ripple efekti, yeni buton ve widget’lar, splashFactory için InkSparkle(Widget’lara dokunmalarda oluşan arka plan görüntüsü) gibi yenilikler geldi.

Bazı güncellemeler alan başlıca material widget’lar:

  1. AppBar
  2. FloatingActionButton(FAB)
  3. ElevatedButton
  4. OutlinedButton
  5. IconButton
  6. Card
  7. Sliders
  8. DropdownMenu
  9. Switches
  10. BottomSheet
  11. Chips
  12. Dialogs
  13. NavigationRail
  14. BottomAppBar
  15. popUp Menus
  16. Radio
  17. CheckBox
  18. Material Banner
  19. CircleAvatar
  20. DatePicker
  21. ListTile
  22. Drawer
  23. TimePicker

.

.

Material 3'teki Yeni Widget’lar

Materyal 3'e eklenen yeni widget’lardan bazıları şunlardır:

  1. NavigationBar & NavigationDrawer
  2. Segmented buttons
  3. Filled buttons
  4. Filled tonal button
  5. Badges

.

Bu yeni widget’ları ve özelliklerini biraz daha yakından inceleyelim :)

.

  1. NavigationBar and NavigationDrawer

Material 3 ile birlikte BottomNavigationBar widget’ı NavigationBar olarak değiştirilmiştir. NavigationBar biraz daha uzun ve tıklandığında altındaki gölge yok. Bunun yerine arka planında seçili olanda yüzey renk tonu vardır.

NavigationBar

2. Segmented Buttons

Segmented buttons seçenekleri belirlemek, görünümleri değiştirmek veya öğeleri sıralamak için kullanılan bir widget’tır. MultiSelectionEnabled parametresini belirtmediğiniz sürece varsayılan olarak yalnızca tek bir öğeyi seçebiliriz.

Segmented Button

3. Filled buttons and Filled tonal button

Filled button; FAB’den sonra en iyi görsel etkiye sahip olduğundan “Onayla”, “Kaydet”, “Şimdi Katıl” gibi akışı tamamlayan önemli son eylemler için kullanılabilir.

Filled tonal button; ikincil bir arka plan rengi vardır. Bu butonu daha düşük öncelikli bir gereksinim için kullanılabilir. Örneğin; bir akışı olan ekranda “Sonraki” gibi bir buton olarak kullanmayı düşünebiliriz.

Material Buttons

4. Badges

Badge, widget hakkında bir durum, sayı yada ekstra bilgi sağlamak amacıyla kullanılır.

Badges

Material 2 ve Material 3 Arasındaki Temel Farklar

  1. Dynamic Colour
  2. Shapes
  3. Elevation
  4. Typography

.

Hadi şimdi bu maddelere dalalım :)

.

  1. Dynamic Color

Material 3 dinamik renk seçenekleri sunar. Uygulamanın tamamında kolayca tutarlı bir renk teması belirtmemizi sağlar. Bunun için colorSchemeSeed renigini ayarlamamız yeterli olacaktır. colorSchemeSeed ekledikten sonra colorScheme, primaryColor, or PrimarySwatch bu özellikleri kaldırmamız gerekmektedir.

colorSchemeSeed

Rengine müdahale etmediğimiz ve Material 3 destekleyen widgetlar için görüntü şu şekilde olacaktır:

Starting app after adding seed color

Dynamic Color için kullanışlı bir çok özellik var. Şuraya incelemeniz için bir paket ve içerik bırakıyorum. Şuraya :)

.
.

2. Shapes

Material 3 ile FAB’ın yuvarlak dikdörtgen bir şekle sahip olduğunu görüyoruz. Diğer tüm butonlar da yine aynı şekilde yuvarlak dikdörtgen şekline dönüşmüş durumdadır. Card, Dialog, BottomSheets, Chips, Switch gibi widget’lar ise daha yuvarlak hale getirilmiş.

.

.

3. Elevation

Material 3 ile surfaceTintColor adında yeni bir özellik geldi. Herhangi bir widget’in üzerinde yüksekliği/yoğunluğu gösteren bir ifade gibi düşünülebilir. Elevation değerine göre widget opaklığı ayarlanır.

.

.

4. Typography

Material 2'de Headline, Subtitle, BodyText, Caption, Overline ve Buton vardı. Ancak Material 3'te kullanımları daha açıklayıcı olan Display, Headline, Title, Body, and Label bulunur.

Material 2'de Headline en büyük, Overline en küçük yazı tipi boyutuna (10) sahipken, Material 3'te Display en büyük ve Label en küçük yazı tipi boyutuna (11) sahiptir.

Örneğin,

Material 2 headline1 yazı tipi boyutu 96, Material 3 displayLarge yazı tipi boyutu ise 57'dir.

Material 2 overline yazı tipi boyutu 10'dur, Material 3 labelSmall yazı tipi boyutu ise 11'dir.

Material 3 ve Material 2 yazı tipi boyutları arasındaki karşılaştırma şu şekildedir:

Her iki versiyonun tipografisi hakkında daha fazla bilgi için Material 2 ve Material 3'ü kontrol edebilirsiniz.

.

.

.

Sonuç

Material 3, Flutter’a yeni bir renk katıyor diyebiliriz. Tek bir yerde yazılan Flutter kodunu web, mobil ve masaüstünde kullanabiliyorken tasarım anlamında farklılıklar olabiliyordu. Fakat Material 3 ile farklılıklar oluşmadan bütün platformlar için dizayn içerikleri de daha da ortaklaşmış oldu/oluyor/olacak. :)

Flutter ekibi tüm widget’ları Material 3'e taşımak için çalışmalarını sürdürüyor. İlerlemelerini Bring Material 3 to Flutter sayfasından takip edebilirsiniz.

Ayrıca Material 3'ü Flutter ile hızlıca test etmek için şuraya tıklayabilirsiniz: Şuraya :)

.

.

Umarım faydalı bir yazı olmuştur 🙏

Bir sonraki yazımda görüşmek üzere 👋

--

--