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
310 yazı bulundu
Flutter 3 ve Dart 3'te Gelenler: Impeller, Pattern'ler, Widget Previews, material_ui ve Sırada Ne Var
Frontend SERİ 17

Flutter 3 ve Dart 3'te Gelenler: Impeller, Pattern'ler, Widget Previews, material_ui ve Sırada Ne Var

Dart 3.0 null safety'yi zorunlu yapıp record, pattern ve sealed class getirdi; 3.6–3.13 digit separator'dan primary constructor'a kadar küçük ama günlük kodu değiştiren adımlar attı. Flutter tarafında Impeller, SwiftPM, UIScene, Widget Previews ve 3.44–3.50 arasında Material'in material_ui paketine ayrılması var; dil sürümünün pubspec'ten geldiğini ve yükseltme pratiğini gerçek çıktılarla gösteriyoruz.

15 Kas 2026 8 dk 13
Flutter Uygulamasını Yayınlamak: Google Play ve App Store, Signing, Versioning, Flavor'lar ve CI
Frontend SERİ 16

Flutter Uygulamasını Yayınlamak: Google Play ve App Store, Signing, Versioning, Flavor'lar ve CI

Flutter uygulaması iki mağazada da aynı yoldan geçer: release build, imzalama, test kanalı, inceleme ve kademeli yayın. Bookstore için sürüm numaralarını, --dart-define-from-file ile ortamları (ve neden secret taşıyamadıklarını), Android upload key ve Play App Signing'i, iOS imzalama ve TestFlight'ı, 2026 mağaza kurallarını ve GitHub Actions'ta imzalı App Bundle build'ini anlatıyoruz.

15 Kas 2026 8 dk 12
Flutter'da Test: Unit, Widget ve Integration Test, Fake Repository'ler ve Golden Test
Frontend SERİ 15

Flutter'da Test: Unit, Widget ve Integration Test, Fake Repository'ler ve Golden Test

Flutter'da testin omurgası fake repository'lerle yazılan unit ve widget testleridir; mock yalnız "bu çağrı yapıldı mı?" sorusu için, integration_test kritik akışlar için, golden test de tek platformda görsel değişiklikleri yakalamak için. Bookstore'un 86 testi, provider ve go_router'lı checkout akışı, mocktail'in registerFallbackValue tuzağı ve golden'ın platform farkıyla.

15 Kas 2026 9 dk 14
Flutter'da Local Storage ve Offline: shared_preferences, flutter_secure_storage, SQLite/drift ve Cache Stratejisi
Frontend SERİ 14

Flutter'da Local Storage ve Offline: shared_preferences, flutter_secure_storage, SQLite/drift ve Cache Stratejisi

Flutter'da küçük ve gizli olmayan ayarlar shared_preferences'a, token'lar flutter_secure_storage'a (iOS Keychain, Android Keystore), sorgulanan veri drift ile SQLite'a yazılır. Bookstore'un sepetini drift'e taşıyor, migration ve reactive query'yi deniyor, katalogu fresh cache, ağ ve stale cache sırasıyla internet yokken de gösteriyoruz; ViewModel'ler değişmeden.

15 Kas 2026 9 dk 10
Flutter'da API Entegrasyonu: http/dio, JSON Serialization, Repository ve ASP.NET Core Bookstore API'ye Bağlanmak
Frontend SERİ 13

Flutter'da API Entegrasyonu: http/dio, JSON Serialization, Repository ve ASP.NET Core Bookstore API'ye Bağlanmak

Flutter uygulamasını bir ASP.NET Core API'ye bağlamanın sağlam yolu, HTTP'yi tek bir ApiClient'ta toplamak (timeout, yalnız GET için retry, 401'de tek refresh), JSON'u domain modeline tek noktada çevirmek ve repository'yi değiştirip ViewModel'e dokunmamaktır. Bookstore API'nin SQLite kopyasına karşı gerçek yanıtlar, ProblemDetails eşlemesi, 10.0.2.2, cleartext ve CORS tuzaklarıyla.

15 Kas 2026 12 dk 8
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 8
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 9
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 11
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 9
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 7
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 9
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 7
Blog Haritası