Sobes.tech
Junior

Τι είναι οι SharedPreferences και πώς τις χρησιμοποιείτε;

sobes.tech AI

Απάντηση από AI

SharedPreferences είναι ένας απλός μηχανισμός για την αποθήκευση μικρών όγκων δεδομένων σε ζεύγη κλειδιού-τιμής. Ιδανικό για την αποθήκευση ρυθμίσεων χρήστη ή μικρών σημαίων.

Χρήση:

  1. Προσθήκη εξάρτησης: Στο αρχείο pubspec.yaml, προσθέτουμε:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Χρησιμοποιήστε την τρέχουσα έκδοση
    

    και εκτελούμε flutter pub get.

  2. Εισαγωγή:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Λήψη στιγμιότυπου:

    // Ασύγχρονη λειτουργία
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Αποθήκευση δεδομένων:

    // Αποθήκευση συμβολοσειράς
    prefs.setString('username', 'Alice');
    // Αποθήκευση αριθμού (int)
    prefs.setInt('age', 30);
    // Αποθήκευση αριθμού (double)
    prefs.setDouble('salary', 50000.50);
    // Αποθήκευση boolean
    prefs.setBool('darkMode', true);
    // Αποθήκευση λίστας συμβολοσειρών
    prefs.setStringList('items', ['item1', 'item2']);
    

    Όλες οι μέθοδοι αποθήκευσης επιστρέφουν Future<bool>, που υποδεικνύει την επιτυχία της λειτουργίας.

  5. Ανάγνωση δεδομένων:

    // Ανάγνωση συμβολοσειράς
    String? username = prefs.getString('username'); // Επιστρέφει null αν το κλειδί δεν βρεθεί
    // Ανάγνωση αριθμού (int)
    int? age = prefs.getInt('age');
    // Ανάγνωση αριθμού (double)
    double? salary = prefs.getDouble('salary');
    // Ανάγνωση boolean
    bool? darkMode = prefs.getBool('darkMode');
    // Ανάγνωση λίστας συμβολοσειρών
    List<String>? items = prefs.getStringList('items');
    
  6. Διαγραφή δεδομένων:

    // Διαγραφή με κλειδί
    prefs.remove('username'); // Επιστρέφει `Future<bool>`
    // Διαγραφή όλων
    prefs.clear(); // Επιστρέφει `Future<bool>`
    

Περιορισμοί:

  • Δεν κατάλληλο για αποθήκευση μεγάλων όγκων δεδομένων ή πολύπλοκων δομών.
  • Τα δεδομένα αποθηκεύονται σε ανοιχτή μορφή (ακόμα και σε επίπεδο εφαρμογής), δεν κατάλληλο για ευαίσθητες πληροφορίες.
  • Λειτουργεί με βασικούς τύπους δεδομένων. Για αντικείμενα απαιτείται σειριοποίηση/αποσειριοποίηση (π.χ. με json).