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);
    // Запис на булева стойност
    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');
    // Четене на булева стойност
    bool? darkMode = prefs.getBool('darkMode');
    // Четене на списък от низове
    List<String>? items = prefs.getStringList('items');
    
  6. Изтриване на данни:

    // Изтриване по ключ
    prefs.remove('username'); // Връща `Future<bool>`
    // Изтриване на всички данни
    prefs.clear(); // Връща `Future<bool>`
    

Ограничения:

  • Не е подходящо за съхраняване на големи обеми данни или сложни структури.
  • Данните се съхраняват в открит вид (дори на ниво приложение), не е подходящо за чувствителна информация.
  • Работи с базови типове данни. За обекти е необходима сериализация/десериализация (например с json).