Flutter
Kalıcı saklama
shared_preferences ile notları kalıcı yaparsın.
shared_preferences ile saklama
Notları kalıcı yapmak için shared_preferences paketini kullanırsın. Notların listesini önce jsonEncode ile JSON dizesine çevirir, sonra prefs.setString('notlar', s) ile saklarsın. Uygulama açıldığında prefs.getString('notlar') ile bu dizeyi okur, jsonDecode ile çözüp Note.fromJson ile listeye çevirirsin.
final prefs = await SharedPreferences.getInstance();
final s = jsonEncode(notlar.map((n) => n.toJson()).toList());
await prefs.setString('notlar', s);
Okuma ve çözme
Kayıtlı dizeyi okurken prefs.getString('notlar') sonucunu kontrol edersin. Dize varsa jsonDecode ile List'e çevirir, her elemanı Note.fromJson ile modele dönüştürürsün. Dize yoksa boş liste ile başlarsın.
final s = prefs.getString('notlar');
if (s == null) return [];
final liste = jsonDecode(s) as List;
return liste.map((e) => Note.fromJson(e as Map<String, dynamic>)).toList();
Uygulama notlariKaydet fonksiyonu
notlariKaydet adında async bir fonksiyon yaz. SharedPreferences.getInstance() ile prefs al, notlar listesini jsonEncode ile dizeleştir (notlar.map((n) => n.toJson()).toList()), sonra prefs.setString('notlar', s) ile kaydet. main içinde 'hazir' yazdır.
Örnek çözümü göster
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
class Note {
final String id;
final String baslik;
final String icerik;
Note(this.id, this.baslik, this.icerik);
Map<String, dynamic> toJson() => {'id': id, 'baslik': baslik, 'icerik': icerik};
}
Future<void> notlariKaydet(List<Note> notlar) async {
final prefs = await SharedPreferences.getInstance();
final s = jsonEncode(notlar.map((n) => n.toJson()).toList());
await prefs.setString('notlar', s);
}
void main() {
print('hazir');
}
Kendini test et
-
Not listesini shared_preferences'a kaydetmeden önce ne yapılır?
- Listeyi jsonEncode ile JSON dizesine çevirmek
- Listeyi bir Future'a sarmak
- Listeyi bir Widget'a çevirmek
- Listeyi sqflite tablosuna yazmak
Cevabı göster
Listeyi jsonEncode ile JSON dizesine çevirmek — shared_preferences yalnızca temel türleri saklar; bu yüzden not listesini önce jsonEncode ile dizeleştirirsin. Future sarmak, Widget'a çevirmek ve sqflite kaydetmek farklı işlemlerdir ve burada gerekli değildir.
-
String olarak sakla
final s = jsonEncode(notlar.map((n) => n.toJson()).toList());
await prefs.____('notlar', s);
Cevabı göster
final s = jsonEncode(notlar.map((n) => n.toJson()).toList());
await prefs.setString('notlar', s);
-
Kalıcı saklama parçaları
- shared_preferences
- kalıcı saklama
- jsonEncode
- listeyi dizeleştirme
- setString
- dize yazma
- jsonDecode
- dizeyi çözme
Sıradaki ders: Özet - Not uygulaması