Shared Preferences yapısını, uygulama içerisindeki küçük verileri saklamak için kullanıyoruz. Bu yapı sayesinde int, double, String, bool tipinde verileri tutabilirsiniz.
Nasıl Kullanılır?
Projemize pub.dev sitesinden shared_preferences paketini ekliyoruz. Nasıl ekleyeceğinizi bilmiyorsanız pub.dev sitesinde Installing sekmesi altında detaylı bir şekilde anlatılıyor.
Visual Studio Code kullandığınızı varsayarak, yeni bir terminal açıp şu kodu çalıştırıyoruz.
1 |
flutter pub add shared_preferences |
Şimdi paketimizi dosyamıza import edelim.
1 |
import 'package:shared_preferences/shared_preferences.dart'; |
Shared Preferences yapısını çağırıyoruz.
1 |
var sharedPreferences = await SharedPreferences.getInstance(); |
Tüm veri kayıt/veri çekme işlemlerini bu nesne üzerinden halledeceğiz.
Veri Kaydetmek
Burada karşımıza key-value yapısı çıkıyor. Kısaca anlatmak gerekirse key anahtar kelimedir. Veri yani value bu key altında saklanır. Bir veriyi key ile çağırırız veya kaydederiz. Bu yüzden key benzersiz olmalıdır.
1 2 |
var sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setString(key, value); |
Tabi bu iki kodu normal bir fonksiyonun içerisine yazarsak çalışmaz. Bu kodları asenkron bir fonksiyonun içerisine yazmalıyız.
1 2 3 4 5 6 7 |
Future<void> setString(String key, String value) async { var sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setString(key, value); } //kullanimi setString('kullanici_adi', 'hakans'); |
Yukarıdaki setString fonksiyonu String veri kaydeder.
Veri Çekmek
Asenkron bir fonksiyon olduğu için kullanımı bu şekilde.
1 2 3 4 5 6 7 8 9 10 11 |
Future<String> getString(String key) async { var sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getString(key) ?? 'none'; } //kullanimi getString('kullanici_adi').then(((value) { setState(() { kullanici_adi = value; }); })); |
Örnek olması açısından diğer veri tipleri için kaydetme/çekme fonksiyonlarını içeren classı vereceğim. Sizde basic_pref.dart adında dosya oluşturup içerisine aşağıdaki kodları yapıştırabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import 'package:shared_preferences/shared_preferences.dart'; class BasicPref { Future<void> setInt(String key, int value) async { var sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setInt(key, value); } Future<void> setString(String key, String value) async { var sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setString(key, value); } Future<void> setBool(String key, bool value) async { var sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setBool(key, value); } Future<int> getInt(String key) async { var sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getInt(key) ?? 0; } Future<String> getString(String key) async { var sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getString(key) ?? 'none'; } Future<bool> getBool(String key) async { var sharedPreferences = await SharedPreferences.getInstance(); return sharedPreferences.getBool(key) ?? false; } } final basicPref = BasicPref(); |