Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
17 yazı bulundu #flutter
Flutter Nedir? Tek Codebase, Kendi Rendering Engine'i ve .NET MAUI / React Native / Native Karşısında Yeri
Frontend SERİ 01

Flutter Nedir? Tek Codebase, Kendi Rendering Engine'i ve .NET MAUI / React Native / Native Karşısında Yeri

Flutter, platformun native kontrollerini kullanmak yerine her pikseli kendi engine'iyle (Impeller) çizen, tek Dart codebase'inden Android ve iOS uygulaması üreten bir UI toolkit'i. Katmanlarını, Dart'ın geliştirmede JIT ve release'te AOT derlenmesini gerçek ölçümle gösteriyor, .NET MAUI, React Native ve native seçenekleriyle karşılaştırıp Flutter'ın ne zaman seçilmeyeceğini anlatıyoruz.

15 Kas 2026 12 dk 6
Flutter Kurulumu ve İlk Proje: SDK, Android Studio, Xcode, Emulator, flutter doctor ve Hot Reload
Frontend SERİ 02

Flutter Kurulumu ve İlk Proje: SDK, Android Studio, Xcode, Emulator, flutter doctor ve Hot Reload

Flutter'ı Windows'ta Android için, macOS'ta Android ve iOS için kurmak, flutter doctor çıktısını okumak ve bookstore_app'i material_ui ile oluşturmak bu yazının konusu. Hot reload'un state'i koruyup hot restart'ın sıfırladığını gerçek bir koşuyla gösteriyor, pubspec.yaml'ı csproj ve package.json ile eşliyor, emulator olmadan widget testi ve web build'iyle doğrulama yapıyoruz.

15 Kas 2026 14 dk 5
C# Geliştiricisi için Dart 1: Tipler, Null Safety, Collection'lar, Function'lar ve Record'lar
Frontend SERİ 03

C# Geliştiricisi için Dart 1: Tipler, Null Safety, Collection'lar, Function'lar ve Record'lar

Dart'ın null safety'si C#'tan farklı olarak sound: nullable bir değeri kontrol etmeden kullanmak uyarı değil derleme hatası, ve non-nullable bir değişken çalışma anında da null olamaz. C# bilen okur için var/final/const farkını, const'un canonical instance üretmesini, collection if/for ve null-aware element'leri, named parametreleri ve record'ları gerçek çıktılarla anlatıyor, Bookstore'un Book ve Author modellerini yazıyoruz.

15 Kas 2026 14 dk 4
C# Geliştiricisi için Dart 2: Class'lar, Primary Constructor, Mixin, Sealed Class ve Pattern Matching
Frontend SERİ 04

C# Geliştiricisi için Dart 2: Class'lar, Primary Constructor, Mixin, Sealed Class ve Pattern Matching

Dart'ta sealed bir hiyerarşi üzerindeki switch, yeni bir alt tip eklendiğinde derlenmez ve eksik durumu adıyla gösterir; value equality ise == ve hashCode yazılmadan gelmez. Constructor çeşitlerini, Dart 3.13 primary constructor'larının C# 12'den farkını, class modifier'larını, mixin ve extension type'ları gerçek çıktılarla anlatıyor, Bookstore'un OrderStatus ve Money tiplerini yazıyoruz.

15 Kas 2026 14 dk 5
Dart'ta Asenkron Programlama: Future, async/await, Stream ve Isolate
Frontend SERİ 05

Dart'ta Asenkron Programlama: Future, async/await, Stream ve Isolate

Dart tek thread'li bir event loop'ta çalışır: async/await işi arka plana taşımaz, ağır bir iş UI'ı dondurur ve gerçek paralellik için ayrı bellekli isolate gerekir. Future'ı C#'taki Task ile, Stream'i IAsyncEnumerable ile karşılaştırıyor; 20 MB'lık bir JSON'un ana isolate'te frame'leri durdurduğunu, Isolate.run ile durdurmadığını ölçüyor, await edilmeyen Future'ın hatasının nasıl kaybolduğunu gösteriyoruz.

15 Kas 2026 13 dk 5
Flutter'da Her Şey Widget: StatelessWidget, StatefulWidget, BuildContext ve Üç Ağaç
Frontend SERİ 06

Flutter'da Her Şey Widget: StatelessWidget, StatefulWidget, BuildContext ve Üç Ağaç

Flutter'da widget ekrandaki şeyin kendisi değil, immutable bir konfigürasyon: rebuild'de widget'lar yenilenir, element'ler ve render object'ler yerinde kalır, State element'te yaşar. BookCard ve FavoriteButton üzerinden State'in yaşam döngüsünü Angular karşılıklarıyla, const'un rebuild'i kesmesini, await sonrası mounted kontrolünü ve key olmadan state'in yanlış satıra kaymasını gerçek test çıktılarıyla gösteriyoruz.

15 Kas 2026 12 dk 6
Flutter Layout: Constraint'ler Aşağı, Size'lar Yukarı — Row, Column, Expanded, Stack ve Overflow Hataları
Frontend SERİ 07

Flutter Layout: Constraint'ler Aşağı, Size'lar Yukarı — Row, Column, Expanded, Stack ve Overflow Hataları

Flutter'da parent child'ına bir constraint verir, child bu sınırın içinde kendi boyunu seçer, konumu parent belirler; Row içindeki bir Text sınırsız genişlik aldığı için taşar. Constraint'leri testte yazdırıyor, tight ve loose farkını, Expanded ve Flexible'ı, üç klasik layout hatasını ve LayoutBuilder ile telefon/tablet düzeni olan kitap detay ekranını gerçek çıktılarla gösteriyoruz.

15 Kas 2026 11 dk 6
Flutter'da Liste ve Grid: ListView.builder, Sliver'lar, Lazy Rendering ve Bookstore Katalog Ekranı
Frontend SERİ 08

Flutter'da Liste ve Grid: ListView.builder, Sliver'lar, Lazy Rendering ve Bookstore Katalog Ekranı

ListView'ın varsayılan constructor'ı da yalnız görünen satırları build eder ama bütün satır widget'larını önceden oluşturur; veriye bağlı listeler ListView.builder ya da sliver'larla kurulur, shrinkWrap ise bin satırın hepsini build ettirir. Bookstore katalog ekranını CustomScrollView, SliverAppBar ve liste/grid geçişiyle kuruyor, sayfalı yüklemeyi, pull-to-refresh'i, boş/hata durumlarını ve cacheWidth'in belleği 8 MB'tan 122 KB'a indirmesini gerçek test çıktılarıyla gösteriyoruz.

15 Kas 2026 11 dk 5
Flutter'da Theme ve Material 3: ThemeData, ColorScheme, Dark Mode, material_ui Paketi ve Cupertino
Frontend SERİ 09

Flutter'da Theme ve Material 3: ThemeData, ColorScheme, Dark Mode, material_ui Paketi ve Cupertino

ColorScheme.fromSeed seed rengini olduğu gibi kullanmaz, ondan light ve dark için okunabilir kontrastlı ayrı paletler üretir; ColorScheme'de yeri olmayan değerler ThemeExtension ile temaya eklenir. Bookstore'un kahverengi temasını, dark mode'u, kendi renk token'larımızı, 3.50'de SDK içi Material'ın deprecated olmasıyla material_ui/cupertino_ui geçişini, adaptive widget'ları ve Türkçe locale ile intl biçimlendirmesini gerçek test çıktılarıyla anlatıyoruz.

15 Kas 2026 9 dk 6
Flutter'da Form ve Kullanıcı Girdisi: Form, TextFormField, Validation, Focus ve Klavye
Frontend SERİ 10

Flutter'da Form ve Kullanıcı Girdisi: Form, TextFormField, Validation, Focus ve Klavye

Flutter'da form, Form ve GlobalKey<FormState> ile toplanır; validator null dönerse alan geçerlidir, sunucunun ProblemDetails hataları ise forceErrorText ile ilgili alana yazılır. Giriş ve teslimat adresi formlarında AutovalidateMode seçimini, FocusNode ile hatalı ilk alana odaklanmayı, input formatter'ların sınırını, klavye açılınca body'nin küçülmesini ve Angular Reactive Forms karşılıklarını gerçek test çıktılarıyla gösteriyoruz.

15 Kas 2026 9 dk 7
Flutter'da State Management: setState'ten ChangeNotifier'a, provider ile DI ve Resmî Mimari Rehberi
Frontend SERİ 11

Flutter'da State Management: setState'ten ChangeNotifier'a, provider ile DI ve Resmî Mimari Rehberi

Flutter'ın resmî mimari rehberi app state için View, ViewModel, Repository ve Service katmanlarını, tek yönlü veri akışını ve provider ile dependency injection'ı öneriyor. Bookstore'un sepetini ChangeNotifier tabanlı CartViewModel, Command ve sealed Result ile kuruyor, Selector'ın fiyat değişikliğinde gereksiz rebuild'i kestiğini gerçek test çıktılarıyla gösteriyor ve Riverpod, Bloc ve signals ile karşılaştırıyoruz.

15 Kas 2026 10 dk 6
Flutter'da Navigation: Navigator, go_router ile Declarative Routing, Deep Link ve Redirect ile Auth Guard
Frontend SERİ 12

Flutter'da Navigation: Navigator, go_router ile Declarative Routing, Deep Link ve Redirect ile Auth Guard

go_router'da context.go URL'ye gidip stack'i URL'nin hiyerarşisinden yeniden kurar, context.push ise mevcut stack'in üstüne ekler ve sonuç döndürebilir. Bookstore'a StatefulShellRoute ile her sekmesi kendi stack'ini tutan alt menüyü, /catalog/books/:isbn deep link'ini, refreshListenable ile kendiliğinden yeniden çalışan redirect auth guard'ını ve PopScope ile form kaybını önlemeyi gerçek test ve Chromium çıktılarıyla ekliyoruz.

15 Kas 2026 10 dk 6
Blog Haritası