Sobes.tech
Junior

Flutterдеги SharedPreferences колдонуу өзгөчөлүгү эмнеде?

sobes.tech AI

AIден жооп

SharedPreferences кыскача API сунуштайт жана кыска мөөнөттүү маалыматтарды сактоо үчүн (примитивдүү түрлөр: int, double, bool, String, List<String>) ачкыч-маалымат парлары түрүндө. Маалыматтар асинхрондуу сакталат. Бул колдонуучу жөндөөлөрү, абал белгилери жана башка критикалык эмес маалыматтарды сактоо үчүн ылайыктуу.

Өзгөчөлүктөрү:

  • Колдонуу жөнөкөйлүгү: API жеңил жана интуитивдүү.
  • Асинхрондуу операциялар: Бардык окуу жана жазуу операциялары асинхрондуу, бул UI агымын токтотпойт.
  • Чектелген түрлөрдүн тизмеси: Тек гана примитивдүү түрлөрдү жана жолдордун тизмесин колдойт.
  • Көп маалымат же татаал структуралар үчүн ылайыктуу эмес: Көп жазууларды же чоң структураларды сактоо үчүн эффективдүү эмес.
  • Платформага көз каранды: Нативдүү сактоо механизмдерине негизделген (мисалы, iOSтогу NSUserDefaults, Androidтогу SharedPreferences).
  • Купуя маалымат үчүн коопсуз эмес сактоо: Маалымат ачык түрдө сакталат, паролдор же башка сезимтал маалыматтар үчүн ылайыктуу эмес.
  • Кирүү үчүн 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(); // Бардык маалыматтарды өчүрөт