يعد تخزين البيانات واسترجاعها من الأمور الأساسية في تطوير التطبيقات. وقد توفرت تقنية SharedPreferences في Flutter لتخزين بيانات من نوع أزواج “المفاتيح والقيم” في أنظمة التشغيل Android و iOS. وتُسهِّل هذه التقنية على المطورين حفظ البيانات بسهولة وفي بضعة أسطر فقط، مما يوفر الوقت والجهد في عملية التطوير. في هذا المقال، سنتحدث عن كيفية استخدام SharedPreferences في Flutter.
ما هو SharedPreferences في فلاتر؟
تستخدم SharedPreferences في Flutter لتخزين البيانات في أنظمة التشغيل Android و iOS. وتستخدم SharedPreferences في iOS نظام NSUserDefaults وفي Android تستخدم SharedPreferences، وتوفر هذه التقنية مخزنًا دائمًا للبيانات البسيطة.
“اقرأ أيضاً: شرح استخدام ويدجت Divider في فلاتر“
لماذا استخدام SharedPreferences في Flutter؟
تتيح SharedPreferences في Flutter حفظ القيم الصغيرة بسهولة، مثل العلامات التي قد تريد حفظها للاستخدام في وقت لاحق عندما يشغل المستخدم التطبيق. ولأن SQLite لا يعتبر الحل الأمثل لتخزين القيم الصغيرة، حيث ستحتاج إلى كتابة أكواد طويلة ودعم فئات متعددة، فإن SharedPreferences تمكِّنك من قراءة وكتابة أزواج المفاتيح والقيم بسهولة وبضعة أسطر فقط.
“اقرأ أيضاً: شرح استخدام ويدجت SizedBox في فلاتر“
كيفية استخدام SharedPreferences في Flutter؟
يرجى ملاحظة أن Flutter SDK لا يدعم SharedPreferences، ولكن يمكن استخدام مكوِّن الإضافة shared_preferences package للاحتفاظ بالبيانات المخزنة على القرص. ويمكن استخدام مجموعة من الخطوات لتحقيق هذا الهدف، كما يلي:
الخطوة 1: إضافة sharedpreferences package
يجب إضافة باكج sharedpreferences إلى ملف pubspec.yaml.
dependencies: flutter: sdk: flutter shared_preferences: "<newest version>"
الخطوة 2: استيراد shared_preferences.dart
يجب استيراد shared_preferences.dart في الملف الذي تريد استخدام SharedPreferences فيه.
import 'package:shared_preferences/shared_preferences.dart';
الخطوة 3: حفظ البيانات في SharedPreferences
يمكن إضافة الأنواع int و String و double و bool فقط باستخدام SharedPreferences. وهناك طرق setter في فئة SharedPreferences تأخذ المفتاح والقيمة. وتكون المفاتيح قيم نصية فقط String.
// حفظ قيمة String SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('stringValue', 'Hello World'); // حفظ قيمة int SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setInt('intValue', 123); // حفظ قيمة double SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setDouble('doubleValue', 3.14); // حفظ قيمة boolean SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setBool('boolValue', true);
“اقرأ أيضاً: شرح استخدام ويدجت SafeArea في فلاتر“
الخطوة 4: استرجاع البيانات في SharedPreferences
يمكن استرجاع القيم المحفوظة باستخدام getter في SharedPreferences، وهناك getter لكل نوع تم حفظه.
// استرجاع القيمة String SharedPreferences prefs = await SharedPreferences.getInstance(); String stringValue = prefs.getString('stringValue') ?? ''; // استرجاع القيمة int SharedPreferences prefs = await SharedPreferences.getInstance(); int intValue = prefs.getInt('intValue') ?? 0; // استرجاع القيمة double SharedPreferences prefs = await SharedPreferences.getInstance(); double doubleValue = prefs.getDouble('doubleValue') ?? 0.0; // استرجاع القيمة boolean SharedPreferences prefs = await SharedPreferences.getInstance(); bool boolValue = prefs.getBool('boolValue') ?? false;
الخطوة 5: حذف البيانات في SharedPreferences
يمكن حذف بيانات SharedPreferences باستخدام طريقة remove() في فئة SharedPreferences، والتي تحتاج إلى المفتاح key.
SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.remove('stringValue');
“اقرأ أيضاً: شرح استخدام ويدجت AbsorbPointer في فلاتر“
التأكد من وجود القيمة في SharedPreferences
يمكن فحص ما إذا كانت قيمة معينة موجودة في SharedPreferences باستخدام الكود التالي:
SharedPreferences prefs = await SharedPreferences.getInstance(); bool CheckValue = prefs.containsKey('value');
ستعيد دالة containsKey قيمة true إذا كان التخزين الدائم يحتوي على المفتاح المعطى، وستعيد القيمة false إذا لم يتم العثور على المفتاح.
“اقرأ أيضاً: شرح استخدام ويدجت RadioListTile في فلاتر“
تستخدم SharedPreferences في Flutter لتخزين بيانات من نوع أزواج المفاتيح والقيم في أنظمة التشغيل Android و iOS. وتُسهِّل هذه التقنية على المطورين حفظ البيانات بسهولة وبضعة أسطر فقط، مما يوفر الوقت والجهد في عملية التطوير. ويمكن استخدام مكوِّن الإضافة shared_preferences للاحتفاظ بالبيانات المخزنة على القرص. ويمكن حفظ الأنواع int و String و double و bool باستخدام SharedPreferences، ويمكن استرجاعها باستخدام getter المناسب لكل نوع. ويمكن حذف البيانات باستخدام طريقة remove() في فئة SharedPreferences.
شكرا