Назад к вопросам
Junior
164
questionbank

Что такое SharedPreferences и как его использовать?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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).