İçeriğe geç

Hegemonia frontend paket araştırması

Riverpod onaylı durum yönetimidir. Önerilen temel: Flutter SDK, flutter_riverpod, go_router, Dio ve SDK yerelleştirmesi. Mobil oturumda flutter_secure_storage, kullanıcı tercihlerinde shared_preferences eklenir. JSON modelleri oluştuğunda json_serializable/build_runner; değişmez model ihtiyacı belirginleştiğinde Freezed kullanılır. Bunların hepsini ilk boş scaffold’a doldurmak gerekli değildir.

Yeni öneriler içinde en doğrudan fayda sağlayanlar yerel saklama ayrımı, flutter_lints ve Riverpod analiz eklentisidir. Görsel, push, editör, harita ve hata toplama paketleri ilgili özellik veya hizmet kararıyla eklenir. Reverb istemcisi deneyle seçilecek adaydır; popüler paketlerle aynı güven düzeyinde gösterilmez.

Kapsam Android, iOS ve webdir. Tek dünya, kapalı ekosistem, Laravel/Octane ve sunucu otoriteli oyun esas alınmıştır. Docker yoktur. İnceleme 10 Eylül 2026 tarihinde doküman, yayın metadata’sı ve seçili değişiklik kayıtlarına dayanır. Kaynak planın 4 ve 7. bölümleri başlangıç girdisidir; son görüşme kararları eski önerileri geçersiz kıldığında önceliklidir. Paket kaynağının tamamı audit edilmedi; bağımlılık çözümü, cihaz testi ve kapasite ölçümü yapılmadı.

“En iyi” üç ayrı kavramdan ayrılır: güncel kararlı yayın, kullanım yaygınlığı ve projeye uygunluk. Bir paketin çok indirilmesi web davranışını veya kendi Reverb sunucumuzla uyumunu ispatlamaz. Az güncelleme almak da tek başına terk edilme kanıtı değildir. Son yayın, publisher/repository bağlantısı, özellik dokümanı, SDK gereksinimleri ve ilgili changelog birlikte değerlendirilmiştir.

27 paketin sürüm ve kullanım ölçümleri ayrı envanterdedir. Kararlar mimari öneridir; Riverpod dışındaki yeni adayların bu raporla otomatik onaylandığı veya kurulduğu varsayılmaz. Bağımlılık sayısı tek başına amaç değildir: tekrar eden işi çözen küçük bir paket, elde yazılmış büyük bir framework’ten daha az bakım getirebilir.

flutter_riverpod 3.4.3 için yayın metadata’sı Dart ^3.12.0 istiyor. Onaylı seçim korunur. Provider bağımlılıkları özellik sınırlarını izler; tek global GameState içinde bütün oyunu tutmak önerilmez. Veriyi yüklemekle oyuncu komutunu göndermek ayrı işlemdir. Riverpod 3 otomatik retry davranışı nedeniyle komutları provider başlangıcının yan etkisi yapmak uygun değildir. Deneysel offline persistence ve Mutations başlangıç temeli değildir. [1]

Kod üretimi Riverpod’un çalışması için zorunlu değildir. İlk provider’lar elle açık şekilde tanımlanabilir. Freezed/JSON üretimi zaten devredeyse generator’ın tutarlılık ve ergonomi yararı tekrar değerlendirilir. riverpod_generator ile riverpod_annotation sürüm numaraları flutter_riverpod ile aynı olmak zorunda değildir. Aynı numarayı tüm aileye yazmak yerine paket gereksinimleri esas alınır. [2]

go_router 18.0.1 önerilir; Flutter publisher’ı altında URL tabanlı yönlendirmeyi sağlar. auto_route 11.1.0 geçerli alternatif olarak incelendi; ikinci yönlendirici olarak eklenmez. Mevcut ihtiyacı karşılayan go_router varken yalnız popülerlik gerekçesiyle geçiş yapılmaz. Giriş yönlendirmesi, derin bağlantı ve tarayıcı geri davranışı aynı route sözleşmesine bağlı olur. [3]

Dio 5.11.1; interceptor, timeout, iptal ve ortak hata dönüşümü için önerilir. Retrofit 4.10.0 Dio üstünde bildirimsel API kod üretimi alternatifidir. Çok sayıda benzer endpoint oluştuğunda gerçekten tekrar azaltıyorsa değerlendirilebilir; ilk aşamada ikinci generator ihtiyacını haklı çıkaran API hacmi henüz yok. [4]

Repository widget’tan ağ erişimini ayırır. HTTP ve WebSocket verisi iki bağımsız doğru durum olarak tutulmaz. Okuma retry politikasıyla maliyetli komut retry politikası aynı değildir. Bu sorumluluk Dio’nun varsayılan davranışına bırakılmaz.

json_serializable 6.14.1 + json_annotation, API model dönüşümü için önerilir. Freezed 4.0.1 gereken immutable modellerde copy/equality/union yükünü azaltabilir. Her sınıfı Freezed yapmak veya aynı modele ayrıca Equatable eklemek hedef değildir. [5]

Önemli metadata bulguları:

  • Freezed 4.0.1: Dart >=3.13.0; analyzer >=13.0.0 <15.0.0.
  • build_runner 2.16.1: Dart ^3.11.0; analyzer >=13.3.0 <15.0.0.
  • json_serializable 6.14.1: analyzer >=10.0.0 <15.0.0.
  • riverpod_generator 4.0.9: analyzer >=13.0.0 <15.0.0.

Bu aralıkların kesişmesi ilk statik olumlu sinyaldir; bütün dolaylı bağımlılıkların birlikte çözüldüğünü kanıtlamaz. Freezed metadata’sı freezed_annotation 3.1.0 kullanıyor; ana generator 4.x diye annotation’a da 4.x yazılmaz.

flutter_lints 6.0.0 başlangıç kod standardıdır. riverpod_lint 3.1.9 ortak Riverpod hatalarını işaretlemek için önerilir. Güncel doküman analysis_server_plugin üzerinden analysis_options.yaml içindeki plugins yapılandırmasını tarif ediyor. Eski custom_lint kurulum reçetesi körlemesine kopyalanmayacak. Bu araç geliştirme analiz eklentisidir; oyuncu uygulamasının runtime bağımlılığı gibi değerlendirilmez. [6]

flutter_test ve integration_test SDK araçlarıdır. Mocktail 1.0.5 yalnız mock gereken testte eklenir; her veri sınıfı veya repository için mock zorunlu değildir. Paket araştırması ürün testlerinin geçtiği anlamına gelmez.

flutter_secure_storage 11.0.0 mobil oturum bilgisinin işletim sistemine uygun saklanması için önerilir. Paket Android için minimum API 23 bildiriyor; iOS tarafında Keychain kullanıyor. Web uygulamasında aynı paketi token deposu yapma kararı verilmemiştir: mevcut tasarım HttpOnly session cookie’yi esas alır. Bu öneri repo/env şifreleme kararı değildir; son kullanıcının cihazındaki oturum saklamadır. [7]

shared_preferences 2.5.5 dil, ses ve arayüz tercihleri içindir; enerji, bakiye veya tamamlanmış işlem kaydı için değildir. Yeni kullanımlarda SharedPreferencesAsync veya gerekçeli cache API’si seçilir; eski SharedPreferences kullanımını otomatik kopyalamayız. Kritik olmayan tercihlerle korumalı oturum bilgisinin iki ayrı ihtiyacı çözmesi gereksiz paket çoğaltma değildir. [8]

intl 0.20.3 tarih/sayı biçimleme adayıdır; Flutter SDK flutter_localizations gereksinimiyle uyumlu çözülür. gen-l10n ve ARB varken başlangıçta ikinci çeviri framework’ü önerilmez.

flutter_svg 2.3.0 SVG ikon/arma assetleri geldiğinde uygundur. SVG desteği, karmaşık etkileşimli bölge haritasının tamamını çözmüş olmak değildir. Avatarlar için cached_network_image 4.0.0 adaydır. Paket README’si web desteğinin sınırlı olduğunu ve kendi caching uygulamasını içermediğini açıkça belirtiyor; webde tarayıcı HTTP cache davranışı ayrıca yönetilir. [9]

cached_network_image için eski “güncellenmiyor” yorumları güncel yayın yerine kullanılmaz. 4.0.0 changelog başlığı 25 Ağustos, pub.dev gerçek yayın kaydı 28 Ağustos 2026’dır; bunlar farklı tarihlerdir. Yeni major sürüm Flutter >=3.44.0 ve Dart ^3.12.0 sınırı getiriyor. Bu nedenle en yeni sürümü otomatik olarak test edilmiş kabul etmeyiz. [10]

image_picker 1.2.3 avatar/makale görseli yükleme ekranında, url_launcher 6.3.2 dış bağlantı ihtiyacında eklenir. Fontları repodaki asset olarak tutmak için başlangıçta runtime font indirme paketi gerekmez. Yerel dosya yolunun webde de aynı şekilde çalışacağı varsayılmaz.

dart_pusher_channels 1.3.1 özel host kurulumunu dokümante ediyor; Android/iOS/web desteğini bildiriyor. 30 günlük indirme hacmi 12.372. pusher_channels_flutter 2.6.0 için aynı ölçüm 54.671; bu sayı kendi Reverb host’una daha uygun olduğunu göstermiyor. İkinci paketin incelenen genel init dokümanında özel host seçimi netleşmedi; kesin destek yokluğu sonucu çıkarılmadı. [11]

Öneri: dart_pusher_channels küçük Reverb adaptörü arkasında ilk teknik ispat adayı olsun. WSS, private kanal yetkilendirme, yeniden bağlantı ve logout temizliği görülmeden kesinleştirilmesin. Salt web_socket_channel bağlantısı Pusher kanal protokolünü kendiliğinden sağlamaz. Socket.IO istemcisi doğrudan eşdeğer değildir.

2000 izleyici sayısı frontend paket benchmark’ı değildir. Her cihazın aldığı olay sıklığı, widget güncellemeleri ve saklanan liste uzunluğu ayrı etkendir. Paket bu ölçekte test edilmedi. Yoğun canlı listeler sınırsız büyütülmeyecek; bu prensip belirli bir animasyon tasarımını dayatmıyor.

connectivity_plus 7.3.1 zorunlu değil. Bağlantı türü değişimi için yardımcı sinyal sağlar; Wi-Fi bulunması API’nin erişilebilirliğini kanıtlamaz. HTTP/WSS hataları zaten ele alınmalıdır. [12]

firebase_messaging 16.6.0 FCM/APNs aşamasında adaydır; firebase_core bağımlılığı vardır. Bu seçim Firebase Auth/Firestore veya ikinci backend eklemek anlamına gelmez. Push uygulama içi Reverb olayının yerine kullanılmaz. Mağaza, cihaz ve servis yapılandırması yapılmadan bildirim teslimi kanıtlanmış değildir. [13]

sentry_flutter 9.29.0 Android/iOS native hata desteği de sunan bir adaydır. Ancak SDK ile hataları toplayan hizmet aynı şey değildir. Mevcut bir Sentry hedefi doğrulanmadı; hizmet, maliyet ve veri gönderimi kararı olmadan etkinleştirilmeyecek. Docker istenmeyen ortama sırf bu paket için yeni self-hosted servis yığını kurulmayacak. Alpha 10 sürümü yerine kararlı hat değerlendirilir. [14]

flutter_map 8.3.2 coğrafi harita yaklaşımı için incelendi. Haritanın koordinat, tile ve polygon veri yapısı kesinleşmeden zorunlu paket değildir. Kurgusal vektör haritada SDK çizim araçları yeterli olabilir. “Oyunda harita var” tek başına GIS bağımlılığı seçtirmez. Sağlayıcı ve asset lisansı paket seçiminden ayrıdır. [15]

flutter_quill 11.5.1 zengin metin düzenleyicisi adayıdır. Delta JSON veri modelini kullanır; HTML’e çevirip geri alma kayıpsız bir varsayım değildir. Flutter editörü ile Filament tarafındaki makale yönetiminin ortak veri formatı belirlenmeden bağlanmayalım. Basit metin alanı isteniyorsa zengin editör paketi gereksizdir. [16]

infinite_scroll_pagination 5.1.1 tekrarlayan karmaşık liste durumlarını azaltabilir. İlk listede Flutter ListView/Sliver + repository sayfalamasıyla başlanabilir. Riverpod ve ayrı paging controller aynı verinin iki bağımsız sahibi olmayacak. Paketi kullanmamak için zamanla aynı büyüklükte özel framework yazmaya da gerek yok.

GetX/Bloc ikinci state sistemi olarak alınmayacak; Riverpod kararı onaylıdır. get_it/injectable ikinci DI düzeni olarak eklenmez. Yerel DB ve offline komut kuyruğu şu an gerekmiyor; sunucuda otomatik ilerleme, offline istemci mimarisi değildir. Flame/Rive/Lottie yalnız somut görsel ihtiyaç olursa değerlendirilir; araştırmada bu üçü için sürüm/kapasite garantisi verilmez. Tüm font, analytics, device-info ve yardımcı paketler sırf popüler diye kurulum listesine eklenmez.

Önerilen ilk küme: flutter_riverpod, go_router, dio, SDK localization/uyumlu intl; auth/ayarlar geldiğinde iki storage paketi; model geldiğinde JSON/Freezed üretim araçları; geliştirmede flutter_lints ve uyumlu riverpod_lint.

Uygulama başlarken tek uyumlu SDK/paket seti çözülür, sürümler lockfile’a alınır ve ilk dikey dilimin ilgili platform kanıtı elde edilir. iOS için macOS/Xcode gerekir. Android emülatörü iOS kanıtı değildir. Şimdi paket kurulumu, SDK yükseltme, full-suite veya performans testi yapılması bu raporun kapsamı değildir.

Kaynaklar 10 Eylül 2026 erişimidir; tarih verilmeyen sayfalara yayın tarihi atanmamıştır. Metadata envanteri pub.dev canlı API verisine dayanır. İlgili her paketin yayın sayfası envanterde doğrudan bağlantılıdır.

  1. Riverpod, What’s new in Riverpod 3.
  2. Riverpod, About code generation.
  3. Flutter, go_router; AutoRoute.
  4. CFUG, Dio; Retrofit maintainers, Retrofit.
  5. Freezed maintainers, Freezed; Google, json_serializable; Dart, build_runner.
  6. Riverpod, riverpod_lint kurulumu; Flutter, flutter_lints.
  7. Steenbakker, flutter_secure_storage.
  8. Flutter, shared_preferences.
  9. flutter_svg; Baseflow, cached_network_image.
  10. Baseflow, cached_network_image changelog.
  11. Kerim, dart_pusher_channels; Pusher, pusher_channels_flutter.
  12. Flutter Community, connectivity_plus.
  13. Firebase, firebase_messaging.
  14. Sentry, sentry_flutter.
  15. fleaflet, flutter_map.
  16. Flutter Quill maintainers, flutter_quill.