Yeni başlayanlardan profesyonel geliştiricilere kadar herkesin bilmesi gereken noktaları
Her gün derinleşen Flutter ekosisteminde, bazen gözümüze ufak bir değişiklik göze çarpar ama altında büyük bir dönüşüm gizlidir. Flutter 3.35, işte böyle “küçük ama etkili” güncellemelerle geldi. Bu yazıda, en dikkat çeken yenilikleri keşfederken, her biriyle alakalı neden önemli olduklarını ve pratikte nasıl göze çarptıklarını anlatıyorum. Umarım faydalı olur.
Yazının tamamına buradan ulaşabilirsiniz.
Breaking Changes — Kodunuzu Yeniden Yazmanız Gereken Değişiklikler
Form artık sliver değil
Daha önce CustomScrollView
içindeki Form
widget’ı doğrudan kullanabiliyorduk, artık bir hata alıyoruz. Yeni dünyada şu şekilde:
CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: Form(...),
),
],
);
Kodunuzda Form
widget’ının yapı olarak nerede yer aldığına dikkat etmeniz gerekecek — çünkü bu doğrudan dönüşümsüz bir değişiklik.
Semantics elevation & thickness kaldırıldı
Erişilebilirlik API’lerinde yer alan semanticsElevation
ve semanticsThickness
özellikleri artık yok. Eğer özel a11y donanımlı widget’lar geliştirdiyseniz, bu alanları yeniden gözden geçirmeniz gerekebilir.
DropdownButtonFormField’de value
deprecated, initialValue
geldi
Artık DropdownButtonFormField
kullanırken:
DropdownButtonFormField<String>(
initialValue: 'A',
items: [...],
onChanged: (v) {},
);
value:
alanını kullanıyorsanız, bunu initialValue:
ile değiştirmeniz gerekiyor. Bu, form state yönetimini daha tutarlı hale getirmek için yapılmış. Kodlarıızı bu doğrultuda ayarlamalısınız.
Radio Widget Yeniden Tasarlandı
Radio
artık görsel ve davranışsal olarak güncellendi. Tema uyumu ve erişilebilirlik açısından iyileştirildi. Ancak özelleştirme yapıyorsanız yeni RadioThemeData
alanlarına bakmanız gerekecek. Buna noktada tema ile ilgili ayrı bir parantez açsam iyi olacak.
Tema Normalizasyonu
Birçok component theme API’sinde (AppBarTheme, InputDecorationTheme vb.) isimlendirme ve varsayılan değerler düzenlendi. Tema dosyalarınızda uyarılar alabilirsiniz.
Framework Tarafındaki Önemli Geliştirmeler
Widget Preview’ın ışık-dil desteği
Widget Preview özelliği çok daha esnek hale geldi: tema ve parlaklık (brightness) ayarlarını ve dil yerelleştirmesini artık farklı modalitelerde test edebilirsiniz. Özellikle paket geliştiriciler için faydalı olacağını düşünüyorum.
DrivenScrollActivity.simulation Constructor
Daha karmaşık scroll animasyonlarını manuel olarak yönetmek isteyenler için yeni bir constructor eklendi. Bunun, özel fizik animasyon senaryolarında işinize yarayacağı belirtilmiş. Örneğin:
TreeSliver & SliverEnsureSemantics
Flutter içindeki TreeSliver
yapısının kaydırma (scroll) davranışı düzeltildi, artık daha az UI artifaktı yaşanıyor. Aynı zamanda erişilebilirlik açısından da SliverEnsureSemantics
hatalı alt-özellikler yeniden canlandırıldı — özellikle ekran okuyucu kullanıcıları için olumlu.
MediaQuery.heightOf / widthOf
MediaQuery.sizeOf(context).height
yerine artık direkt MediaQuery.heightOf(context)
gibi daha kısa metodlar var.
final screenHeight = MediaQuery.heightOf(context);
Cupertino ve Material Değişiklikleri
Cupertino
CupertinoSlider
artık titreşim (haptic feedback) destekli. Dokunsal geri bildirim kullanıcının kaydırdığı hissini pekiştiriyor.CupertinoDatePicker
,CupertinoTimerPicker
,CupertinoExpansionTile
,CupertinoCollapsible
gibi yeni bileşen veya gelişmiş davranışlar geldi.- Düğmeler, navigasyon bar geçişleri daha tutarlı, animasyonlar daha pürüzsüz hale geldi.
Material
CarouselView Geliştirmeleri
CarouselView
artık temalandırılabilir ve hatalar giderildi. Mouse scroll desteği ve crash fix’leri önemli.
InputDecorationTheme Genişletildi
visualDensity
desteği geldi.hintMaxLines
eklenerek uzun placeholder metinlerinin kontrolü kolaylaştı.hintLocales
ile placeholder için çoklu dil desteği mümkün oldu.
Switch ve CheckboxListTile Geliştirmeleri
Switch
içinactiveThumbColor
eklendi.CheckboxListTile
veSwitchListTile
içinisThreeLine
tema üzerinden ayarlanabilir.
DropdownMenuFormField Yenilikleri
restorationId
desteği.trailingIcon
gizlenebilir.value
parametresi yerineinitialValue
. (yukarıda bunu açıklamıştım)
Platforma Özel İyileştirmeler
iOS & macOS
- Minimum iOS sürümü 13’ten 14’e şeklinde güncellenmedi ama bazı API’lerde modern Swift uyumu sağlandı.
- Swift ile embedder desteği genişledi.
Hot restart
ardından klavye kapanması gibi küçük ama önemli iyileştirmeler yapıldı.- Live Text destekleri eklendi.
Android
- Min SDK yükseltildi: artık API 24 (Lollipop) altı desteklenmiyor.
- Android target SDK hedefi 36’ye çıktı.
- Impeller Vulkan başlatma süresi iyileşti, grafik odaklı uygulamalar bunu doğrudan hissedecek.
- Deprecation:
setStatusBarColor
vb. metotlar kaldırılacak.
Web
- Safari/Firefox’taki bazı input focus sorunları giderildi.
- VoiceOver gibi erişilebilirlik araçlarında tab sıralaması düzenlendi.
Paint
dithering sayesinde grafiksel pürüzsüzlük arttı.
Windows
- Multi-window desteği eklendi.
- Platform ve UI thread’leri “birleşik yapı”ya kavuşturuldu. Windows uygulamalarında performans ve sabitlik artışı hedefleniyor.
Engine ve Performans İyileştirmeleri
- Impeller: kesme (stroke) hesaplamaları daha verimli, Vulkan modunda daha hızlı açılış.
- Leak tracker’ın web için deneysel modu geldi, developer memory leak kontrolü kolaylaşıyor.
- Pub workspace ile çalışma altyapısı Modern Flutter projesine evrildi.
- Test süreçlerinde birçok pub package temizlendi, build süreci hızlandı.
- Frame rendering daha kararlı: Özellikle düşük donanımlı cihazlarda FPS dalgalanmaları %30 oranında azaldı.
- Shader compilation cache geliştirmeleri sayesinde ilk açılışta yaşanan “jank” sorunu büyük ölçüde azaldı.
- Skia güncellemesi ile daha keskin vektör çizimleri ve düşük bellek tüketimi.
Küçük bir not: Eğer oyun benzeri animasyonlar kullanıyorsanız, bu sürümde Impeller
ile test yapmayı deneyin. Daha akıcı bir deneyim fark edeceğinizi söylüyorlar.
Özetle;
Flutter 3.25, sadece bir sürüm güncellemesi değil; daha akıcı, daha uyumlu ve geliştirici dostu bir deneyim sunuyor. Ayrıca performans optimizasyonuaçısından da önemli bir adım.
Küçük projeler için bile faydalı olan, büyük projelerde ise doğrudan kodunuzu etkileyecek değişiklikler içeriyor. Elimden geldiğince release notlarından özetlemeye çalıştım umarım faydalı olur.
Eğer projenizde henüz güncelleme yapmadıysanız, Flutter’ı şu komutla hemen güncelleyebilirsiniz:
flutter upgrade
Buraya kadar okuduğunuz için teşekkür ederim.
Yazımı beğendiyseniz clap butonuna tıklamayı ve diğer içeriklerimden haberdar olmak için abone olmayı unutmayın.
Yeni yazılarda görüşmek üzere.
Selin.