← Blog
MOBİLMOBILE·17 AĞUSTOS 2026AUG 17, 2026·9 DK OKUMA9 MIN READ

Flutter'da büyük ayrılma: material_ui ve cupertino_ui artık bağımsızFlutter's big split: material_ui and cupertino_ui are now standalone

12 Ağustos 2026'da Flutter 3.47 ile birlikte Material ve Cupertino, yıllardır yapışık durdukları SDK'dan çıkıp pub.dev'de bağımsız birer paket oldu. Eski import'larınız hâlâ çalışıyor — ama Flutter'ın kendi takvimine göre Kasım 2026'daki sürümde resmen deprecated olacaklar. Bu yazı neyin değiştiğini, migration'ın nasıl yapıldığını ve büyük projelerde neyin planlanması gerektiğini anlatıyor.

On 12 August 2026, Flutter 3.47 moved Material and Cupertino out of the SDK they had been welded to for years and onto pub.dev as standalone packages. Your existing imports still work — but per Flutter's own timeline they are formally deprecated in the November 2026 release. This post covers what actually changed, how the migration works, and what to plan for on a large codebase.

Naylalabs · MühendislikEngineering
Snapshot: Bu yazı 17 Ağustos 2026'da, Flutter 3.47 esas alınarak yazıldı. Bütün tarihler, sürüm numaraları ve anket rakamları Flutter'ın kendi duyurularından doğrulandı: code freeze duyurusu, Flutter 3.47 ve Q2 2026 anketi. Flutter hızlı değişiyor; bu tarihten sonrasını kaynaklardan teyit edin. Snapshot: Written on 17 August 2026 against Flutter 3.47. Every date, version number and survey figure here was verified against Flutter's own announcements: the code freeze post, Flutter 3.47 and the Q2 2026 survey. Flutter moves fast; check the sources for anything after that date.

Flutter ile uygulama geliştiriyorsanız kodunuzda neredeyse kesin olarak şu satır var:

If you build with Flutter, your code almost certainly contains this line:

main.dart
// Bu satırın ömrü artık sayılı.// This line is now on a clock.
import 'package:flutter/material.dart';

Bu import'un hangi sürümde çalışmayı bırakacağı, aşağıdaki takvimin cevapladığı asıl soru.

Which release that import stops working in is the question the timeline below answers.

01Sorun neydi: her şey aynı kutudan çıkıyorduWhat the problem was: everything shipped in one box

Flutter'ın "batteries included" yaklaşımı baştan beri bir güçtü. Projeyi açar, material.dart import eder, anında production'a hazır bir widget setine kavuşurdunuz. Bu avantajın gizli bir bedeli vardı: Material ve Cupertino, flutter/flutter deposunun içine kazınmıştı.

Flutter's "batteries included" approach was a strength from the start. Open a project, import material.dart, and you had a production-ready widget set immediately. That advantage carried a hidden cost: Material and Cupertino were carved into the flutter/flutter repository itself.

Güncelleme hızı frenliydi. Küçük bir CupertinoButton düzeltmesi için bile Flutter'ın çeyreklik stable döngüsünü beklemek gerekiyordu. Yeni bir Material 3 bileşeni mi geldi? Yine bekle.

Updates were rate-limited. Even a small CupertinoButton fix had to wait for Flutter's quarterly stable cadence. A new Material 3 component? Wait again.

Katkı vermek zordu. Topluluktan gelen bir Material ya da Cupertino düzeltmesini merge'e taşımak, core SDK'ya dokunmak demekti — inceleme süreçleri buna göre uzuyordu.

Contributing was hard. Landing a community Material or Cupertino fix meant touching the core SDK, and review cycles stretched accordingly.

Özel tasarım sistemleri için zemin yoktu. Flutter uygulamaları ya Material ya Cupertino üzerine kuruluyordu; Fluent benzeri bir dil ya da tamamen kendi tasarım sisteminizi kurmak için "style-neutral" net bir taban yoktu.

There was no ground for custom design systems. Flutter apps were built on either Material or Cupertino; there was no clean style-neutral base for a Fluent-like language or a fully custom design system of your own.

02Bu karar ne zaman alındı? Dört yıllık takvimWhen was this decided? A four-year timeline

Karar ani değil. GitHub'daki #101479 numaralı şemsiye issue — "Move the material and cupertino packages outside of Flutter" — 7 Nisan 2022'de açıldı. Code freeze duyurusunun günü gününe dört yıl sonra, 7 Nisan 2026'da gelmesi hoş bir tesadüf.

This was not sudden. The umbrella issue #101479 — "Move the material and cupertino packages outside of Flutter" — was opened on 7 April 2022. The code freeze landing exactly four years later to the day, on 7 April 2026, is a pleasing coincidence.

TarihDate Ne olduWhat happened
7 Nisan 20227 Apr 2022 Şemsiye issue #101479 açıldı — Material ve Cupertino'nun bağımsız paket olması önerildi.Umbrella issue #101479 opened — proposing Material and Cupertino move out as standalone packages.
7 Nisan 20267 Apr 2026 Justin McCandless code freeze'i duyurdu: flutter/flutter içindeki Material ve Cupertino'ya tüm katkılar donduruldu.Justin McCandless announced the code freeze: all contributions to Material and Cupertino in flutter/flutter are frozen.
20 Mayıs 202620 May 2026 Flutter 3.44 — kütüphanelerin çekirdek içindeki son güncellemesi. Deprecation bu sürümde değil, sonraya bırakıldı.Flutter 3.44 — the final update to these libraries inside the core framework. Deprecation was left to a later release, not this one.
6 Ağustos 20266 Aug 2026 Q2 2026 geliştirici anketi — Cupertino memnuniyeti %61 (top-2 box), Q4 2025'e göre 6 puan düşüş.Q2 2026 developer survey — Cupertino satisfaction at 61% (top-2 box), down 6 points from Q4 2025.
12 Ağustos 202612 Aug 2026 Flutter 3.47 — material_ui 1.0 ve cupertino_ui 1.0 pub.dev'de stable.Flutter 3.47 — material_ui 1.0 and cupertino_ui 1.0 stable on pub.dev.
Kasım 2026Nov 2026 Sonbahar stable sürümü — çekirdekteki tasarım kütüphaneleri resmen deprecated olacak.Fall stable release — the design libraries inside the core SDK are formally deprecated.
AçıklanmadıUnannounced Silinme. Flutter kesin tarih vermedi; deprecation'dan "bir süre sonra" deniyor.Removal. Flutter has published no date; the wording is "some time after" deprecation.

Code freeze'in arkasındaki mantık migration'ı kolaylaştırmak içindi: 3.44 ile dondurulan kütüphaneler, yeni paketlerin 1.0.0 sürümüyle aynı kod tabanı. Yani taşınırken widget davranışı değişmiyor; yalnızca paketin geldiği yer değişiyor. Migration'ı düşük riskli yapan asıl şey bu.

The logic behind the freeze was to make migration painless: the libraries frozen in 3.44 are the same code base as the 1.0.0 releases of the new packages. Widget behaviour does not change in the move; only where the package comes from does. That is what makes this migration low-risk.

03Teknik olarak ne değişiyor?What changes, technically?

KonuArea Eski (SDK içinde)Before (inside the SDK) Yeni (bağımsız paket)After (standalone packages)
Import package:flutter/material.dart package:material_ui/material_ui.dart
Sürüm döngüsüRelease cadence SDK ile birlikte, çeyreklikTied to the SDK, quarterly pub.dev'de, haftalık planlanıyorOn pub.dev, planned weekly
Localization Üç delegate ayrı ayrı listelenirThree delegates listed separately GlobalMaterialLocalizations.delegates
KatkıContributions flutter/flutter (core SDK)(core SDK) flutter/packages

Localization tarafındaki sadeleşme küçük ama günlük hayatta hissedilir. Eskiden üç delegate'i tek tek listelemek gerekiyordu:

The localization change is small but you feel it day to day. You used to list three delegates one by one:

app.dart
// Eskisi — üç ayrı delegate// Before — three separate delegates
localizationsDelegates: const [
  GlobalCupertinoLocalizations.delegate,
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
],

// Yenisi — Cupertino ve Widgets delegate'lerini de kapsıyor// After — this also covers the Cupertino and Widgets delegates
localizationsDelegates: GlobalMaterialLocalizations.delegates,

04Geçiş nasıl yapılır?How do you migrate?

Flutter ekibi bunun için otomatik bir dart fix kuralı hazırladı. Flutter 3.47 ve üzerinde tek komut yeterli:

The Flutter team shipped an automated dart fix rule for this. On Flutter 3.47 and above, one command does it:

terminal
dart fix --apply --code=migrate_design_widgets

Komut import'ları otomatik olarak güncelliyor. pubspec.yaml bağımlılıkları eklenmemiş görünüyorsa, paketleri elle ekleyip tekrar çalıştırın:

It rewrites the imports for you. If the pubspec.yaml dependencies do not appear, add the packages by hand and run it again:

terminal
flutter pub add material_ui
flutter pub add cupertino_ui
dart fix --apply

Bağımlılıklarınız henüz geçmediyse: CompatibilityBridgeIf your dependencies have not migrated: CompatibilityBridge

Kullandığınız üçüncü parti paketlerin bir kısmı henüz taşınmamış olabilir. material_ui, tam bunun için bir uyumluluk köprüsüyle geliyor: uygulamanızı hemen yeni paketlere geçirseniz bile eski import kullanan bağımlılıklarınız çalışmaya devam ediyor.

Some of your third-party packages may not have moved yet. material_ui ships a compatibility bridge for exactly this: you can move your own app to the new packages immediately while dependencies on the legacy imports keep working.

main.dart
import 'package:material_ui/material_ui.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      builder: (context, child) {
        // Eski import kullanan bağımlılıkları ayakta tutar.// Keeps dependencies on the legacy imports working.
        return MaterialUiCompatibilityBridge(child: child!);
      },
      home: const HomeScreen(),
    );
  }
}

Bunun bir geçiş dönemi köprüsü olduğunu unutmayın; kalıcı çözüm değil. Bağımlılıklarınızdan hangilerinin henüz geçmediğini bugün çıkarmak, Kasım'da acele etmekten ucuza gelir.

Treat it as a transition bridge rather than a permanent answer. Working out which of your dependencies have not moved is cheaper today than in a rush in November.

05Paket yayımlıyorsanız: bu bir major releaseIf you publish a package: this is a major release

Flutter'ın 3.47 duyurusu bu konuda net: ekosistemde bir paketi standalone paketlere taşıyorsanız bunu major release olarak değerlendirin. Gerekçe, Material veya Cupertino re-export eden bir paketin API yüzeyinin değişmesi. Adımlar:

Flutter's 3.47 announcement is explicit: if you are migrating a package in the ecosystem, treat the move to the standalone packages as a major release. The reason is that re-exporting Material or Cupertino changes your package's API surface. The steps:

Gecikmenin görünür bir maliyeti de var: pub.dev puanlaması geçiş yapmamış paketleri daha düşük puanlıyor.

Delay carries a visible cost too: pub.dev scoring gives unmigrated packages a lower score.

06Topluluk ne diyor? Q2 2026 anketiWhat does the community say? The Q2 2026 survey

Flutter ekibinin 6 Ağustos 2026'da yayımladığı Q2 2026 geliştirici anketine 3.500'den fazla geliştirici katıldı. Cupertino widget'ları %61 memnuniyetle (top-2 box) en düşük puanlı alan oldu; Q4 2025'e göre 6 puanlık düşüş.

Flutter's Q2 2026 developer survey, published on 6 August 2026, drew over 3,500 responses. Cupertino widgets came in as the lowest-scoring area at 61% satisfaction (top-2 box) — down 6 points from Q4 2025.

Ekip bu düşüşü anket yazısında açıkça sahipleniyor: daha hızlı sürüm çıkarabilecekleri bir noktaya varmak için "Cupertino widget'ları üzerindeki çalışmayı kasıtlı olarak durdurduk" diyorlar. Aynı yazı, bu temel çalışmanın daha önce yeterince hızlı ilerletilemeyen platform sadakati işlerinin önünü açtığını da ekliyor — Material 3 Expressive ve Apple'ın Liquid Glass tasarım dilini benimsemek bunlar arasında sayılıyor.

The team owns that drop directly in the survey post: they say they "intentionally paused work on Cupertino widgets to execute on decoupling to get to that better world where we can ship faster." The same post adds that this foundational work is already unblocking platform fidelity work they could not move fast enough on before — adopting Material 3 Expressive and Apple's Liquid Glass design language among it.

Bu okumayla Cupertino'daki düşüş bir gerileme değil, daha hızlı ilerlemenin geçici bedeli. Yine de bir uyarı: "geçici" olduğunu doğrulayacak veri henüz yok — bunu bir sonraki ankette göreceğiz.

Read that way, the Cupertino dip is not a regression but the temporary price of moving faster. One caveat, though: there is no data confirming the "temporary" part yet — the next survey is where that shows up.

07Bu nereye gidiyor?Where does this go?

Değişimin değeri import satırlarını güncellemekten ibaret değil. Mimari olarak dört şey açılıyor:

The value here is not just rewriting import lines. Architecturally, four things open up:

08Ne yapmalısınız?What should you do?

Bu, kendi ölçeğinde bir migration — ve kademeli geçiş üzerine yazdığımız her şey burada da geçerli: erken başlayan, küçük adımlarla ilerleyen ve geri dönüşü olan plan kazanır. Pratik sıra:

This is a migration in its own right, and everything we wrote about incremental migration applies here too: the plan that starts early, moves in small steps and stays reversible wins. In practice:

Mobil tarafta bu, bu yıl planlamanız gereken tek yapısal değişiklik de değil: ajan uyumlu uygulama tasarımı ve mağaza redleri üzerine yazdıklarımız da aynı takvime giriyor.

On mobile this is not the only structural change to plan for this year: what we wrote on agent-ready app design and on store rejections lands in the same planning window.

09Sık sorulanlarFrequently asked questions

package:flutter/material.dart ne zaman çalışmayı durduracak?When will package:flutter/material.dart stop working?

Flutter 3.47 itibarıyla hâlâ çalışıyor ve migration isteğe bağlı. Çekirdekteki kütüphaneler Kasım 2026'daki sonbahar stable sürümünde resmen deprecated olacak. Silinme tarihi açıklanmadı — bu yüzden import'ların derlenmeyi bırakacağı kesin bir tarih vermek mümkün değil.

As of Flutter 3.47 it still works and migration is opt-in. The libraries in the core SDK are formally deprecated in the Fall stable release in November 2026. No removal date has been published — so there is no firm date on which the old imports stop compiling.

Migration ne kadar riskli, otomatik mi?How risky is the migration, and is it automatic?

Büyük ölçüde otomatik: dart fix --apply --code=migrate_design_widgets. Riski düşük tutan asıl şey, 3.44 ile dondurulan kütüphanelerin yeni paketlerin 1.0 sürümüyle aynı kod tabanı olması — widget davranışı değişmiyor.

Largely automatic: dart fix --apply --code=migrate_design_widgets. What keeps risk low is that the libraries frozen in 3.44 are the same code base as the packages' 1.0 releases — widget behaviour does not change.

Bağımlılıklarım henüz geçiş yapmadıysa?What if my dependencies have not migrated?

MaterialUiCompatibilityBridge ile uygulamanızı hemen taşıyıp eski import kullanan bağımlılıkları ayakta tutabilirsiniz. Geçiş dönemi köprüsü; kalıcı çözüm değil.

MaterialUiCompatibilityBridge lets you move your app immediately while dependencies on the legacy imports keep working. It is a transition bridge, not a permanent answer.

Paket yayımlıyorsam major sürüm şart mı?If I publish a package, is a major bump required?

Flutter'ın tavsiyesi net: evet, major release olarak değerlendirin. Material/Cupertino re-export eden bir pakette API yüzeyi değişiyor. Ayrıca pub.dev geçiş yapmamış paketleri daha düşük puanlıyor.

Flutter's guidance is explicit: yes, treat it as a major release. Re-exporting Material or Cupertino changes your API surface. pub.dev also scores unmigrated packages lower.

Material 3 Expressive ve Liquid Glass için ne anlama geliyor?What does it mean for Material 3 Expressive and Liquid Glass?

Flutter ekibine göre bu temel çalışma, daha önce yeterince hızlı ilerletilemeyen platform sadakati işlerinin önünü açıyor; Material 3 Expressive ve Liquid Glass'ı benimsemek bunlar arasında sayılıyor.

Per the Flutter team, this foundational work unblocks platform fidelity work they could not move fast enough on before — adopting Material 3 Expressive and Liquid Glass among it.

Fluttermaterial_uicupertino_ui MOBİLMOBILE Migration