Tüm Yazılar
KategoriFlutter
Okuma Süresi
15 dk
Yayın Tarihi
2026-10-09
Kelime Sayısı
3.257kelime

Kahveni hazırla - bu içerikli bir makale!

Flutter Projen 3.47'ye Hazır mı? 12 Maddelik Risk Kontrolü

Özet

Flutter 3.47 geçiş kontrol listesi: iOS/macOS minimumdan UIScene'e, SwiftPM'den Impeller'a 12 maddeyi 0-2 puanla değerlendirip projenin risk bandını çıkar.

  • Flutter 3.47 iOS/macOS minimum sürümleri (iOS 15, macOS 12), UIScene zorunluluğu, material_ui/cupertino_ui 1.0 ve SwiftPM ilerlemesini aynı anda getirdi.
  • 12 maddelik kontrol listesindeki her madde 0-2 puanla değerlendirilir; toplam 0-6 yeşil, 7-14 sarı, 15-24 kırmızı bandı belirler.
  • Çekirdek SDK'daki material/cupertino sınıfları Kasım 2026'daki sonbahar stabil sürümünde deprecated ilan edilecek; CocoaPods registry'si 2 Aralık 2026'da salt-okunur olacak.
  • dart fix --apply --code=migrate_design_widgets komutu otomatik migrasyon sağlar ama pubspec.yaml'a yazdığı any ifadesini mutlaka sabitlemen gerekir.
Flutter Projen 3.47'ye Hazır mı? 12 Maddelik Risk Kontrolü

Flutter 3.47, 12 Ağustos 2026'da yayınlandığında projenin önüne altı ayrı göçü aynı anda koydu: iOS/macOS minimum sürüm yükseltmesi, UIScene zorunluluğu, material_ui/cupertino_ui paket ayrımı, SwiftPM geçişi, Impeller'ın masaüstünde varsayılan olması ve Wasm hazırlığı. Bu Flutter 3.47 geçiş kontrol listesi, her birini 0-2 puanla değerlendirip projenin gerçek risk seviyesini 15 dakikada ortaya çıkarmanı sağlıyor.

💡 Pro Tip: Kontrol listesini tek oturumda değil, dart fix --apply --code=migrate_design_widgets komutunu ayrı bir branch'te çalıştırıp diff'i gözden geçirdikten sonra doldur — puanlar gerçek pubspec.yaml ve AppDelegate durumunu yansıtsın, varsayımları değil.

İçindekiler

Nasıl Puanlanır?

Aşağıdaki 12 madde toplamda 24 puanlık bir ölçek oluşturur. Her madde için projenin durumuna göre 0, 1 veya 2 puan ver:

  • 0 puan: Madde projeni hiç etkilemiyor veya zaten tam uyumlusun.
  • 1 puan: Kısmi risk var; gözden geçirme gerekiyor ama acil değil.
  • 2 puan: Doğrudan risk; kod değişikliği veya bağımlılık güncellemesi gerektiriyor.

Puanlamayı doldururken kaynak olarak resmi Flutter 3.47 duyurusunu ve projenin pubspec.yaml, ios/Runner/AppDelegate.swift dosyalarını yan yana açık tut. Aşağıdaki her madde, ilgili konuyu derinlemesine işleyen ayrı bir yazıya iç link veriyor; burada yalnız puanlama açısından neyi kontrol etmen gerektiğini bulacaksın.

Puanlamayı tek başına değil, ekibinle birlikte doldurmanı öneririm: AppDelegate.swift'i en son değiştiren kişi, Podfile'daki bağımlılıkları ekleyen kişi ve CI pipeline'ını yöneten kişi genelde farklı kişilerdir. Her madde için "bunu kim biliyor" sorusunu sorarak ilerlemek, tek bir kişinin tahmine dayalı puan vermesinden çok daha güvenilir bir sonuç verir.

12 Maddelik Risk Kontrolü

1. Minimum iOS/macOS Sürümü

Flutter 3.47 ile desteklenen minimum sürümler yükseldi:

Platform
3.46 ve öncesi minimum
3.47 minimum
iOS
13
15
macOS
10.15
12

Deployment target'ın bu eşiklerin altındaysa 2 puan, tam üzerindeyse 0 puan ver. Ara bir durum (örneğin CI'da henüz test edilmemiş) için 1 puan uygundur. Değeri ararken Info.plist'i açma; iOS deployment target iki yerde yaşıyor: Xcode'da Runner hedefinin Build Settings sekmesindeki Deployment bölümünde (iOS Deployment Target) ve Podfile'daki platform :ios satırında. İkisini birden kontrol et, çünkü farklı kalmış olabilirler. Bu eşiklerin yükselmesinin gerekçesi duyuruda açıkça yazıyor: Xcode 27 desteği. Yani Xcode 27'ye geçmeyi planlıyorsan bu madde isteğe bağlı bir iyileştirme değil, ön koşul.

2. UIScene Benimseme Durumu

Flutter, UIScene yaşam döngüsünü 3.41'den beri varsayılan olarak destekliyor ama asıl risk şu: iOS 27 SDK'sı UIKit tabanlı tüm uygulamalar için UIScene yaşam döngüsünü zorunlu kılıyor ve Xcode 27 ile derlenip UIScene'i benimsemeyen uygulamalar açılışta başlatılamıyor. Çoğu uygulama için Flutter CLI bu migrasyonu build sırasında otomatik yapıyor; ama AppDelegate'inde özel native kod varsa ya da hâlâ legacy uygulama yaşam döngüsüne dayanan bir plugin kullanıyorsan elle migrasyon gerekiyor — bu durumda 2 puan, tamamen varsayılan Flutter şablonundaysan 0 puan. Apple, Xcode 27, iOS 27 ve macOS 27'yi 14 Eylül 2026'da yayınladı; yani bu madde artık hazırlık değil, yürürlükteki bir risk: uygulamanı yayınlanmış Xcode 27 ile derleyip gerçek cihazda açılış testi yapmadan bu maddeye 0 puan verme. Konunun ayrıntılı migrasyon adımları için UIScene zorunluluğu yazımıza bak.

3. material/cupertino Import Sayısı

package:flutter/material.dart veya cupertino.dart importların hâlâ çekirdek SDK içinden geliyorsa bugün için sorun yok, ama bu sınıflar Kasım 2026'daki sonbahar stabil sürümünde resmi olarak deprecated ilan edilecek. Projende onlarca dosyada bu import varsa ve henüz material_ui/cupertino_ui paketlerine geçmediysen 2 puan; geçiş planın varsa 1 puan; zaten taşındıysan 0 puan. Paket ayrımının tamamı için material_ui ve cupertino_ui geçiş rehberimize bakabilirsin — bu yazı yalnız puanlama kriterini verir, ayrıntıyı tekrarlamaz.

4. flutter_localizations Kullanımı

flutter_localizations paketi de unbundled edildi; lokalizasyon delegate'leri artık package:material_ui ve package:cupertino_ui içinde yaşıyor. Riski belirleyen şey sınıfın adı değil, import'un kaynağı: GlobalMaterialLocalizations'ı hâlâ package:flutter_localizations üzerinden import ediyorsan 2 puan, MaterialUiCompatibilityBridge üzerinden köprülüyorsan 1 puan, package:material_ui içinden GlobalMaterialLocalizations.delegates kullanıyorsan 0 puan.

5. dart:html Kullanımı (Wasm Hazırlığı)

Wasm derlemesi hâlâ opt-in (--wasm bayrağı) olduğu için bu madde acil değil, ama projende dart:html kullanan kod varsa Wasm'a geçtiğinde çalışmayacak — legacy kütüphane desteklenmiyor, yerine package:web JS interop paketi gerekiyor. Kodunda dart:html importu varsa ve Wasm hedefin varsa 2 puan; dart:html var ama Wasm planın yoksa 1 puan; hiç kullanmıyorsan 0 puan.

bash
1# Projende henüz taşınmamış legacy import'ları taramak için
2grep -rn "import 'dart:html'" lib/
3grep -rln "package:flutter/material.dart" lib/ | wc -l

6. Plugin SwiftPM Durumu

Topluluk SwiftPM'e geçişte büyük yol kat etti: en popüler 100 iOS plugin'inin 92'si artık Swift Package Manager destekliyor. Kullandığın pluginlerin çoğu bu 92'nin dışındaysa (hâlâ yalnız CocoaPods) 2 puan; karışık bir durumdaysan 1 puan; hepsi SwiftPM destekliyorsa 0 puan.

Bu maddeyi tahminle doldurma; en doğrudan kaynak build çıktısının kendisi. Uygulaman henüz SwiftPM'e geçmemiş pluginlere dayanıyorsa Flutter, hangi bağımlılıklarının desteklenmediğini tek tek listeleyen bir uyarı basıyor ve o pluginler için geçici olarak CocoaPods'a düşüyor. Yani iOS build'ini bir kez çalıştırıp bu uyarı listesini okumak, maddenin puanını doğrudan veriyor. Tek tek doğrulamak istersen ikinci yol plugin'in kendi deposu: bir plugin'e SwiftPM desteği eklemek, depoya Package.swift dosyası eklemek ve kaynak dosyaları standart Swift paket yapısına taşımak demek — depoda Package.swift yoksa o plugin henüz geçmemiştir. SwiftPM'i daha önce kapattıysan flutter config --enable-swift-package-manager ile tekrar açıp denemeni öneririm; uyarı listesi de ancak o zaman anlamlı olur.

7. CocoaPods Bağımlılıkları

CocoaPods artık bakım modunda ve registry'si 2 Aralık 2026'da kalıcı olarak salt-okunur hale gelecek: mevcut build'ler çalışmaya devam ediyor, ama o tarihten sonra trunk'a yeni sürüm veya yeni pod eklenmiyor. SwiftPM'e geçmeyen pluginler zamanla çalışmayı durduracak, pub.dev skorları ise şimdiden düşüyor. Podfile'ında hâlâ birden fazla aktif bağımlılık varsa 2 puan, yalnız 1-2 küçük bağımlılık kaldıysa 1 puan, CocoaPods'tan tamamen çıktıysan 0 puan. pod list çıktısını periyodik olarak gözden geçirip her bağımlılığın SwiftPM alternatifi olup olmadığını not düşmek, Aralık ayındaki registry değişikliğinden önce elinde net bir öncelik sırası olmasını sağlar.

8. Impeller Uyumu ve Custom Shader

Flutter 3.47'de Impeller, macOS, Windows ve Linux'ta varsayılan render motoru oldu. Skia'ya dönme seçeneği hâlâ var ama gelecekteki bir sürümde kaldırılacak. Projende custom shader (FragmentShader) veya Skia'ya özgü düşük seviyeli çizim kodu varsa 2 puan; masaüstü hedefin var ama shader kullanmıyorsan 1 puan; masaüstü hedefin yoksa 0 puan. Render motorunun perde arkası ve performans etkisi için Impeller render engine yazımıza bakabilirsin.

9. Platform View Kullanımı

Native iOS view'larını platform view üzerinden gömüyorsan (harita, video player, native SDK UI bileşenleri gibi), 3.47 bu view'lar için gesture propagation'ı iyileştirdi — davranış değişebilir. Uygulamanda aktif platform view kullanımı varsa 1 puan (test gerektirir, kırıcı değil ama davranış farkı riski var), yoğun/karmaşık gesture senaryoların varsa 2 puan, platform view kullanmıyorsan 0 puan.

10. CI Xcode Sürümü (Xcode 27 Hazırlığı)

Xcode 27 artık bir beta değil: 14 Eylül 2026'da stabil sürüm olarak yayınlandı, App Store gönderimleri ise 9 Eylül 2026'da açıldı. Bu yüzden maddenin ölçütü doğrudan yayınlanmış sürüme bağlı: CI pipeline'ın hâlâ Xcode 26 veya öncesine kilitliyse 2 puan; Xcode 27 ile en az bir job koşuyorsan 1 puan; varsayılan Xcode sürümün 27 ise 0 puan. Flutter ekibi 3.47 geliştirme döneminde kendi CI'ında Xcode 26 ve iOS 26 simülatörüyle test denemesi yapmış, sonra bunu geri almıştı; o tarihsel deneme bile CI'ını katı bir tek sürüme kilitlemek yerine en az bir job'ı düzenli olarak güncel Xcode ile çalıştırmanın neden makul bir orta yol olduğunu gösteriyor.

11. Intel Mac Build Makineleri

Flutter, Apple'ın Apple Silicon geçişine paralel olarak Intel tabanlı Mac desteğini kademeli olarak sonlandırıyor: Intel donanımdaki otomatik test koşuları kapatıldı ve Flutter CLI artık Intel host'larda derleme yaparken ya da çift mimariyi hedeflerken uyarı basıyor. Duyuruda bu uyarıların gelecekteki bir sürümde hataya dönüşeceği açıkça yazılı — yani bugün gürültü olan şey, yarın kırılma.

Geliştirme veya CI makinelerinden en az biri hâlâ Intel Mac ise 2 puan; hepsi Apple Silicon ama macOS build'lerin hâlâ çift mimari üretiyorsa 1 puan; ARM64-only'ye geçtiysen 0 puan. ARM64-only macOS uygulaması üretmeye hemen geçmek istersen komut hazır: flutter config --enable-macos-arm64-only. Bu maddeyi "nasılsa sadece uyarı" diye atlama — donanım yenilemesi, kod değişikliğinden çok daha uzun vadede planlanan bir kalemdir; uyarılar hataya döndüğü gün CI'ın bir anda kırmızıya döner ve o noktada yapacak bir kod düzeltmen olmaz.

Puanı verirken iki soruyu ayrı ayrı sor: build makinesi hangi mimaride ve build çıktısı hangi mimarileri içeriyor. İkisi farklı sorular; Apple Silicon bir makinede bile çift mimari hedeflemeye devam ediyorsan CLI uyarısını almaya devam edersin. Intel donanımdaki otomatik test koşularının kapatılmış olması da ayrı bir sinyal: o taraf artık düzenli olarak sınanmıyor, yani orada karşılaşacağın bir sorunun ne kadar hızlı fark edileceği belirsiz.

12. Dart 3.13 Uyumu

Dart 3.13, Flutter 3.47 ile birlikte yayınlandı ve primary constructors için dokümantasyon genişletildi. Bu bir kırılma değil ama analyzer/lint kurallarının güncel Dart SDK ile hâlâ geçtiğini doğrulaman gerekir. dart analyze CI adımın Dart 3.13'e pin'li değilse 1 puan, hiç CI analiz adımın yoksa 2 puan, güncelse 0 puan. Yeni dil özelliğinin kendisi için Dart 3.13 primary constructor rehberimize bakabilirsin.

Bonus: Android/Kotlin Hizalaması

Bu 12 madde iOS/macOS eksenli riskleri kapsıyor, ama Android hedefin de varsa gözden kaçırma: Android Gradle Plugin (AGP) 9 ve sonrasında built-in Kotlin desteği varsayılan hale geliyor. kotlin-android (Kotlin Gradle Plugin) kullanan uygulamalar ve pluginler migrasyon yapılmadan derlenemiyor. Flutter 3.44, android.builtInKotlin=false ile geçici bir geriye dönük uyumluluk sağladı; 3.47 ise uygulaman ve tüm pluginlerin taşındıktan sonra android.builtInKotlin=true ile built-in Kotlin'i etkinleştirmeyi destekliyor. AGP 9 ayrıca yalnız yeni DSL arayüzlerini tanıyor — eski DSL tipleri tanınmıyor; ama Flutter ekibi şimdilik AGP DSL'ini eski DSL tipleriyle uyumlu olacak şekilde yapılandırdı (Issue #184838), bu yüzden AGP 9 ve sonrasına güvenle yükseltebilirsin — köprü kalıcı değil, yeni DSL göçü bitince kaldırılacak (Issue #184839). Bu maddeyi 12'lik puanlamaya dahil etmedim çünkü iOS-merkezli bir kontrol listesi hedefledim, ama Android hedefi olan ekipler için ayrı bir satır olarak takip etmen gerekiyor.

Yaygın Bir Yanlış Anlama: "ChangeNotifier Taşındı" Söylemi

Kontrol listesini doldururken sık karşılaşılan bir yanlış anlamayı da netleştirmek gerekiyor: bazı topluluk yazılarında ChangeNotifier sınıfının çekirdek SDK'dan yeni bir package:listen paketine "taşındığı" iddia ediliyor. Bu doğru değil — ChangeNotifier ve ilgili sınıflar hâlâ çekirdek SDK içinde duruyor ve deprecated değil; listen paralel, bağımsız bir implementasyon olarak sunuluyor, eski sınıfların yeni evi değil. Puanlamanı yaparken bu ayrımı ChangeNotifier kullanan koda puan vermeden önce netleştir — gereksiz yere 2 puan ekleme.

Risk Skoru Bantları

12 maddenin toplam puanını aşağıdaki bantla eşleştir:

Toplam Puan
Bant
Anlamı
0-6
Yeşil
Proje büyük ölçüde hazır; kalan maddeler gözden geçirme düzeyinde
7-14
Sarı
Planlı bir migrasyon sprinti gerekiyor; acil değil ama Kasım'dan önce başlanmalı
15-24
Kırmızı
Kapsamlı, aşamalı bir göç planı şart; tek commit'te yapılmamalı

Bandı hesaplarken tek bir yüksek puanlı maddenin seni yanlış banda itmesine izin verme: örneğin yalnız UIScene maddesinde 2 puan alan ama diğer 11 maddede 0-1 alan bir proje toplamda sarı banda düşebilir, ama gerçek öncelik açıkça tek bir madde etrafında toplanmıştır. Bu durumda hazırlık çalışmanı da tek bir maddeye odaklaman, genel bir "hepsini birden ele alma" planından daha verimli olur.

Banda Göre Göç Planı

Bu bölümdeki yönlendirme, DartWay'in 3.44.0'dan 3.47.2'ye yaptığı gerçek migrasyon denemesine dayanıyor; gün bazlı bir süre tahmini vermiyorum çünkü süre 2 puan aldığın madde sayısına göre değişiyor.

Yeşil bant: DartWay'in 3.44.0'dan 3.47.2'ye migrasyon denemesinde framework tarafı "bir komut, iki tuzak" düzeyinde kalmış. Komut dart fix --apply --code=migrate_design_widgets; iki tuzak da şöyle. Birinci tuzak: --code=migrate_design_widgets olmadan çalıştırılan düz dart fix --apply işi görmüyor — bu fix varsayılan sette olmadığı için komut koşuyor, başarı raporluyor ve ilgili hiçbir şeyi değiştirmiyor; dışarıdan bakınca "zaten migrate edilmiş" gibi okunuyor. İkinci tuzak: komut pubspec.yaml'a material_ui: any yazıyor; any demek, o paketin bir sonraki breaking sürümünün tek kelime etmeden build'ine girmesi demek.

İkisini de bilerek çalıştır: komutu ayrı bir branch'te koş, diff'i oku ve any'yi caret'li bir sürümle değiştir. İki tuzağın ortak yanı sessiz olmaları — biri hiçbir şey yapmadan "başarılı" der, diğeri bugün çalışan ama gelecekte habersiz kırılacak bir bağımlılık bırakır. Bu yüzden yeşil bantta bile migrasyonu doğrudan main üzerinde değil, diff'ini okuyabileceğin ayrı bir branch'te yapmanı öneririm.

Sarı bant: Framework tarafı hızlı ilerler ama AppDelegate'te özel kod varsa veya birden fazla plugin hâlâ CocoaPods'taysa, bu maddelerin her biri ayrı bir gözden geçirme ve test döngüsü gerektirir — toplamda birkaç güne yayılan, ayrı commit'lerde tutulan bir çalışma planla.

Kırmızı bant: UIScene, SwiftPM ve material_ui/cupertino_ui geçişlerinin üçü birden yoğunsa, bunları framework upgrade'inden ayrı commit'lerde ilerletmek riski azaltır: önce framework sürümünü yükselt ve testleri yeşile çek, sonra UI-paket migrasyonunu, sonra plugin/SwiftPM temizliğini ayrı ayrı yap.

bash
1# Otomatik import migrasyonu — ayrı bir branch'te çalıştır
2git checkout -b chore/flutter-3-47-migrate-widgets
3# Birinci tuzak: --code olmadan koşarsan komut başarı yazar ama hiçbir import'u değiştirmez
4dart fix --apply --code=migrate_design_widgets
yaml
1# pubspec.yaml — ikinci tuzak: dart fix "any" yazar, sürümü mutlaka sabitle
2dependencies:
3 material_ui: ^1.0.0 # "any" bırakılırsa sonraki breaking release sessizce build'ine girer
4 cupertino_ui: ^1.0.0

En Sık 5 Kırılma ve Çözümü

  • UIScene eksikliği nedeniyle başlatma hatası: AppDelegate'te legacy yaşam döngüsüne dayanan özel kod varsa uygulama en yeni SDK ile derlendiğinde açılışta başlatılamıyor. Çözüm: UIScene migrasyon rehberini izleyip özel native kodu UIScene delegate'ine taşı ve gerçek cihazda açılış testini mutlaka yap.
  • material_ui import migrasyonunda sürüm sabitlenmemesi: dart fix komutu pubspec.yaml'a any yazar; sabitlenmezse sonraki bir breaking release sessizce build'e girer ve hata mesajı "zaten migrasyon yapılmış" gibi yanıltıcı görünebilir. Çözüm: yukarıdaki pubspec.yaml örneğindeki gibi ^1.0.0 şeklinde sabitle ve dart fix sonrası diff'i mutlaka gözden geçir.
  • dart:html kalıntıları Wasm derlemesini kırar: Wasm hedefine geçtiğinde dart:html importu derleme hatası verir; bu hata Wasm build'ine geçene kadar fark edilmeyebilir. Çözüm: package:web JS interop paketine geç ve CI'ına en azından ara sıra çalışan bir Wasm build kontrolü ekle.
  • SwiftPM'e geçmemiş pluginler CocoaPods bakım modunda kalır: Bu pluginler zamanla çalışmayı durduracak ve pub.dev skorları şimdiden düşüyor. Çözüm: iOS build'ini bir kez çalıştırıp Flutter'ın bastığı "desteklenmeyen bağımlılıklar" uyarı listesini oku; listedeki her plugin için bakımı aktif bir alternatif ara ya da plugin'in deposuna Swift package desteği isteyen bir issue aç.
  • Custom shader/Skia'ya özgü kod Impeller'da davranış farkı gösterir: Masaüstü hedeflerinde Impeller varsayılan olduğu için Skia'ya özgü düşük seviyeli çizim kodu beklenmedik sonuç verebilir; Skia'ya dönme seçeneği hâlâ var ama gelecekte kaldırılacağı resmi olarak belirtildi. Çözüm: shader kodunu Impeller ile erkenden test et, sorun bulursan resmi Flutter deposuna bug aç.

ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

Kontrol listesini toplantıya götürmeden önce hızlıca gözden geçirebileceğin, puanlama tablosunun dışında kalan pratik bir ön-kontrol listesi hazırladım. Aşağıdaki maddeleri işaretleyerek 12 maddelik puanlamaya başlamadan önce ekibinin hazırlık seviyesini ölçebilirsin.

SSS

Flutter projem 3.47'ye hazır mı?

Tek bir komutla garanti edilemez; beş ayrı alanı ayrı ayrı denetlemen gerekir: material/cupertino importlarının kaynağı, iOS/macOS minimum hedeflerin, AppDelegate'te özel yaşam döngüsü kodu olup olmadığı, pluginlerinin SwiftPM desteği ve CI'ının Xcode sürümü. Bu yazıdaki 12 maddelik puanlama, bu alanları tek seferde gözden geçirmeni sağlar.

Flutter 3.47 göçü kaç gün sürer?

Sabit bir rakam vermek mümkün değil; süre projenin büyüklüğüne ve kaç maddede 2 puan aldığına göre değişir. DartWay'in 3.44.0'dan 3.47.2'ye migrasyon denemesinde framework hazırlık kısmı "bir komut, iki tuzak" düzeyinde kalmış; ama AppDelegate'te özel kod veya SwiftPM'e geçmemiş çok sayıda plugin varsa bu maddelerin her biri kendi gözden geçirme ve test döngüsünü getirir.

Hangi paketler 3.47'de kırılıyor?

3.47'nin getirdiği şey adı verilmiş bir "kırılan paket" listesi değil, bir risk sınıfı: henüz SwiftPM'e geçmemiş pluginler. En popüler 100 iOS plugin'inin 92'si SwiftPM'e geçmiş durumda; geriye kalanlar CocoaPods bakım modunda kaldığı için zamanla çalışmayı durduracak.

Kasım deprecation'ından önce ne yapmalıyım?

İki adım öneririm: dart fix --apply --code=migrate_design_widgets komutunu ayrı bir branch'te çalıştırıp diff'i gözden geçirmek, ardından bu komutun pubspec.yaml'a yazdığı any ifadesini sabit bir sürüme (^1.0.0 gibi) çevirmek — sabitlenmezse sonraki breaking release sessizce build'ine girebilir.

CocoaPods'u tamamen bırakmam gerekiyor mu?

Hemen değil; CocoaPods bakım modunda ve registry'si 2 Aralık 2026'da salt-okunur hale gelecek, ama mevcut build'lerin çalışmaya devam ediyor. Yine de SwiftPM'e geçmeyen pluginler zamanla çalışmayı durduracak ve pub.dev skorları şimdiden düşüyor, bu yüzden geçişi Kasım deprecation'ından önceki planına dahil etmen mantıklı.

material_ui ve cupertino_ui'ye hemen mi geçmeliyim?

Zorunlu değil, çünkü çekirdek SDK'daki eski sınıflar Kasım 2026'ya kadar deprecated ilan edilmeyecek. Ama dart fix --apply --code=migrate_design_widgets komutu geriye dönük uyumlu bir migrasyon sağladığı ve erken geçiş Kasım'daki ani değişiklikten kaçınmanı sağladığı için, Kasım'daki deprecation'a kadarki dönemi "panik yapılacak" değil "sakince migrasyon yapılacak" bir pencere olarak değerlendirebilirsin.

Sonuç

Flutter 3.47, iOS/macOS minimum sürüm yükseltmesinden UIScene zorunluluğuna, material_ui/cupertino_ui paket ayrımından SwiftPM geçişine kadar birden fazla göçü aynı anda önüne koyuyor. Bu yazıdaki 12 maddelik puanlama, hangi alanların acil olduğunu ve hangilerinin gözden geçirme düzeyinde kalabileceğini net bir skorla ayırmanı sağlıyor. Paket ayrımının ayrıntıları için material_ui ve cupertino_ui geçiş rehberine, UIScene'in adım adım migrasyonu için UIScene zorunluluğu yazısına, render motoru değişikliğinin performans etkisi için Impeller render engine yazısına ve dil tarafındaki yeniliği anlamak için Dart 3.13 primary constructor rehberine bakabilirsin. Görsel regresyonu migrasyon boyunca kontrol altında tutmak istersen Flutter test rehberi, performans tarafında genel bir taban çizgisi için de Flutter performans optimizasyonu rehberi faydalı olacaktır.

Kaynaklar

Etiketler

#Flutter 3.47#migration checklist#UIScene#SwiftPM#material_ui#Impeller#Dart 3.13
Muhittin Çamdalı

Muhittin Çamdalı

Lead Mobile Engineer

12+ yıllık deneyime sahip Lead Mobile Engineer. Swift, SwiftUI, Kotlin ve Flutter ile iOS, Android ve cross-platform mimarilerde uzman. Performanslı ve kullanıcı dostu mobil uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Onay e-postasındaki bağlantıyı açıp “Aboneliğimi onayla” düğmesine bastığında aboneliğin başlar. Bültende açılma/tıklama istatistikleri tutulur; dilediğin an tek tıkla ayrılabilirsin. Gizlilik

Paylaş

İlgili İçerik