Flutter ile Offline-First Mimari: Isar Veritabanı ile Veri Yönetimi Görseli

Flutter ile Offline-First Mimari: Isar Veritabanı ile Veri Yönetimi

13.10.2026 | 8

Neden Offline-First Mimari?

Modern mobil uygulamalarda kullanıcılar, internet bağlantısı kopsa bile uygulamanın çalışmaya devam etmesini bekler. Offline-First yaklaşımı, veriyi önce yerel veritabanına yazıp, ardından arka planda sunucuyla senkronize ederek kusursuz bir kullanıcı deneyimi sunar.

Isar: Performans ve Hızın Yeni Adresi

Flutter ekosisteminde Hive popüler olsa da, Isar sunduğu ACID uyumluluğu, ilişkisel sorgulama desteği ve yüksek performanslı indeksleme ile bir adım öne çıkıyor. Isar, tamamen asenkron yapısıyla UI thread'ini asla bloke etmez.

Isar veritabanı ile Offline-First veri akış şeması Görseli
Isar veritabanı ile Offline-First veri akış şeması

Isar Kurulumu ve Şema Tanımlama

Projenize eklemek için isar ve isar_flutter_libs paketlerini pubspec.yaml dosyanıza ekleyin. Veri modelinizi tanımlarken @collection anotasyonunu kullanmak yeterlidir:

@collection
class User {
  Id id = Isar.autoIncrement;
  @Index()
  late String email;
  late String name;
}
Mimari İpucu: Veritabanı işlemlerini doğrudan UI katmanından çağırmayın. Bir Repository sınıfı oluşturarak veri erişimini soyutlayın. Bu, ileride veritabanı değişikliği yapmanız gerekirse kodunuzun geri kalanını korur.

Senkronizasyon Stratejisi

Uygulamanızın çevrimdışı çalıştığını anlamak için connectivity_plus paketini kullanın. Uygulama tekrar çevrimiçi olduğunda, yerelde biriken 'pending' durumundaki kayıtları bir WorkManager veya BackgroundService ile sunucuya gönderin.

Performans İçin Dikkat Edilmesi Gerekenler

  • İndeksleme: Sık sorguladığınız alanlar için mutlaka @Index() kullanın.
  • Batch İşlemler: Çoklu veri ekleme veya güncelleme işlemlerinde isar.writeTxn bloğunu kullanarak işlem süresini optimize edin.
  • Lazy Loading: Büyük veri setlerinde tüm nesneleri belleğe çekmek yerine, sadece ihtiyacınız olan alanları getirin.

Isar, Flutter'ın reaktif yapısıyla mükemmel uyum sağlar. watch() metodu ile yerel veritabanındaki değişiklikleri anlık olarak UI'a yansıtabilir, karmaşık stream yönetimiyle uğraşmadan güncel kalabilirsiniz.

| |