Sobes.tech
Junior

რა არის Flutter-ში SharedPreferences-ის გამოყენების თავისებურება?

sobes.tech AI

პასუხი AI-სგან

SharedPreferences მარტივი API-ს უზრუნველყოფს მცირე მოცულობის მონაცემების შენახვისთვის (პრიმიტიული ტიპები: int, double, bool, String, List<String>) key-value წყვილებად. მონაცემები ინახება ასინქრონულად. ეს შესაფერისია მომხმარებლის პარამეტრებისთვის, მდგომარეობის ნიშნებისთვის და სხვა კრიტიკულად არასაჭირო ინფორმაციისთვის.

სწრაფი თვისებები:

  • გამოყენების სიმარტივე: 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(); // ყველა მონაცემის წაშლა