Junior
Ποιο είναι το χαρακτηριστικό της χρήσης των SharedPreferences στο Flutter;
sobes.tech AI
Απάντηση από AI
Το SharedPreferences παρέχει ένα απλό API για την αποθήκευση μικρών όγκων δεδομένων (πρωταρχικοί τύποι: int, double, bool, String, List<String>) με μορφή ζευγών κλειδιού-τιμής. Τα δεδομένα αποθηκεύονται ασύγχρονα. Αυτό είναι κατάλληλο για την αποθήκευση ρυθμίσεων χρήστη, σημαίων κατάστασης και άλλων μη κρίσιμων πληροφοριών.
Χαρακτηριστικά:
- Εύκολη χρήση: Το API είναι ελαφρύ και διαισθητικό.
- Ασύγχρονες λειτουργίες: Όλες οι λειτουργίες ανάγνωσης και εγγραφής είναι ασύγχρονες, αποτρέποντας το μπλοκάρισμα του UI thread.
- Περιορισμένο σύνολο τύπων: Υποστηρίζει μόνο πρωταρχικούς τύπους και λίστες συμβολοσειρών.
- Δεν είναι κατάλληλο για μεγάλους όγκους ή σύνθετα δεδομένα: Μη αποδοτικό για την αποθήκευση μεγάλων δομών δεδομένων ή πολλών εγγραφών.
- Εξαρτάται από την πλατφόρμα: Η υλοποίηση βασίζεται σε εγγενείς μηχανισμούς αποθήκευσης (π.χ.,
NSUserDefaultsστο iOS,SharedPreferencesστο Android). - Μη ασφαλής αποθήκευση για εμπιστευτικές πληροφορίες: Τα δεδομένα αποθηκεύονται σε ανοιχτό κείμενο, δεν είναι κατάλληλα για κωδικούς πρόσβασης ή άλλες ευαίσθητες πληροφορίες.
- Απαιτεί
awaitγια πρόσβαση: Η λήψη του αντικειμένουSharedPreferencesκαι η εκτέλεση λειτουργιών ανάγνωσης/εγγραφής απαιτούν τη χρήσηawait.
Παράδειγμα χρήσης:
// Απόκτηση του αντικειμένου SharedPreferences
final prefs = await SharedPreferences.getInstance();
// Αποθήκευση δεδομένων
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);
// Ανάγνωση δεδομένων
final counter = prefs.getInt('counter') ?? 0; // Χρήση ?? για προεπιλεγμένη τιμή
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];
// Διαγραφή δεδομένων
await prefs.remove('username');
await prefs.clear(); // Διαγράφει όλα τα δεδομένα