Flutter local veri yönetimi nasıl yapılır sorusuna cevap vereceğim bu yazıda birden çok kütüphane kullanacağız. Shared Preferences, Hive, Secure Storage, Sqflite gibi paketleri kullanarak Flutter uygulamalarında veriler uzak bir sunucu kullanmadan, yerel olarak kontrol edilebilir.
Local veri yönetimi, kullanıcının hassas olmayan verilerini saklamak için kullanılabilir. Örneğin, bir kullanıcının beğendiği veya kaydettiği makaleleri Hive ile saklayabilirsiniz. Kullanıcının kaydettiği Light/Dark mode seçimini bu şekilde kaydedebilirsiniz. Kullanıcının konumuna izin verip vermediği bilgisi vb. bilgileri Shared Preferences gibi kütüphanelerle bu şekilde yönetebilirsiniz.
Shared Preferences & User Defaults
Shared Preferences kütüphanesi, Flutter uygulamalarında String, Integer, Bool, Double ve List<String> veri tiplerini içerisinde bir Map<key,value> olarak tutabilir. iOS ve macOS cihazlarda NSUserDefaults kütüphanesini kullanır. Verilere erişmek ve verileri kaydetmek için async fonksiyonlar yazılması gerekir ve bu veriler tersine mühendislik ile açığa çıkabilir. Shared Preferences nasıl kullanılır?
Flutter Secure Storage
Secure Storage kütüphanesi tıpkı Shared Preferences kütüphanesi gibi çalışır. Windows ve Web üzerinde desteklenmemektedir. iOS tarafında şifreleme için Keychain, Android tarafında AES şifreleme, Linux tarafında da libsecret kullanılmaktadır. Kullanıcının Secure Storage ile uygulama içine kaydettiği veriler tersine mühendislik ile ortaya çıkarılamaz.
Flutter Hive Kütüphanesi
Hive kütüphanesi, Flutter uygulamaları üzerinde komplike verileri lokal olarak kaydetmek için en ideal çözümlerden biridir. TypeAdapter ile oluşturduğunuz sınıf tiplerini yerel olarak kaydedebilirsiniz. Bu yönüyle Sqflite, Shared Preferences gibi çözümlerden ayrılır. Her türlü List<dynamic>, Map<dynamic, dynamic> gibi verileri kaydedebileceğiniz Hive kütüphanesi tüm Flutter uygulamalarında çalışabilir. Flutter Hive nasıl kullanılır?
Sqflite
Sqflite kütüphanesi ile uygulama içerisinde bir SQL database dosyası açarak, bu veritabanına SQL sorgularıyla veri yönetimi yapabilirsiniz. Tıpkı SQL query yazar gibi kullandığınız bu database yalnızca kısıtlı veri tiplerinin kaydedilmesine izin veriyor. Integer, Num, String, Unit8List veri tiplerini destekliyor. DateTime kullanmak için veriyi epoch hale getirip Integer olarak kaydetmeniz, hatta bool veri tipini de 0-1 olarak kodlayıp Integer olarak kaydetmeniz lazım. Sqflite şu haliyle ideal bir çözüm olmaktan çok uzak fakat Sqflite kullanımını merak ediyorsanız bu yazıma göz atabilirsiniz.
Flutter local veri yönetimi çözümlerini sıraladığım bu yazının sonuna geldim. Kişisel olarak projelerde Hive ve Shared Preferences‘i yoğun olarak kullandığımı belirtmeliyim. Hive, tek başına en iyi çözüm olarak karşıma çıkıyor şu an için. Umarım sizler de Hive ile ilgili yazılarımı okuyarak Hive kütüphanesini uygulamanıza entegre edebilir ve local veri yönetimine uygun bir çözüm getirirsiniz. Bir sonraki yazıda görüşmek üzere. 🙂
Okuyucuya Not
Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.
Sağlıcakla kalın!