اذهب إلى المحتوى

السؤال

نشر

تحيه طيبه للجميع 

أقوم بجلب قائمة من قاعدة البيانات من خلال الكود التالي:

  var listCat = [];
  Future getdata() async {
    apiURL = '***************.php';
    var response = await http.post(Uri.parse(apiURL));
    var responsebody = jsonDecode(response.body);
    if (responsebody.length >0){
      for (int i = 0; i < responsebody.length; i++) {
        listCat.add(responsebody[i]['name']+ ':' + responsebody[i]['image'].toString());
      }
      return responsebody;
    }else{
  

    }
  }

طبعا مثل ما هو واضح في الكود أعلاه انا أحاول الحصول على الاسم والصورة وهذا الامر لا توجد فيه مشكله  المشكلة الان انني ارغب بتخزين هذا listCat  في SharedPreferences  حتى استدعيها من جميع صفحات التطبيق

لدي الكلاس التالي لحفظ SharedPreferences 

class APIPreferences {
  static SharedPreferences ? _preferences;
  static const _keyMuinCat = 'MuinCat';



  static Future init() async => _preferences = await SharedPreferences.getInstance();


  static Future setMuinCat(String MuinCat) async => await _preferences!.setString(_keyMuinCat, MuinCat);



  static String? getMuinCat() => _preferences!.getString(_keyMuinCat);



}

 

 

ثم أقوم بحفظ ما احتاج الى حفظه من خلال السطر التالي من أي صفحة ارغب بذلك:

  APIPreferences.setMuinCat(listCat.toString());

ثم يمكنني استدعاء البيانات التي تم تخزينها مسبقاً من أي موقع احتاجه فيها من خلال الكود التالي:

 CatList = APIPreferences.getMuinCat() ?? '';

 

حاولت القيام بالامر التالي الان لحفظ القائمة في اول كود اعلاه:

  var listCat = [];
  Future getdata() async {
    apiURL = '***************.php';
    var response = await http.post(Uri.parse(apiURL));

    var responsebody = jsonDecode(response.body);

    if (responsebody.length >0){

      for (int i = 0; i < responsebody.length; i++) {
        listCat.add(responsebody[i]['name']+ ':' + responsebody[i]['image'].toString());
        APIPreferences.setMuinCat(listCat.toString());

      }

      return responsebody;
    }else{


    }
  }

ولكن الامر لم ينجح لا اعلم حقيقه طريقة التعامل مع مثل هذا الامر لم يسبق ان تعاملت مع حفظ القوائم 

كيف استطيع حفظها ثم استدعيها بشكل الصحيح حتى استطيع استعملها من خلال ListView

ياليت من يعلم الطريقة الصحيحة يساعدنا ولكم جزيل الشكر

Recommended Posts

  • 1
نشر

إن shared preferences في Flutter تسمح لك بتخزين قائمة سلاسل نصية مباشرة من خلال الدالة setStringList كما الطريقة التالية:

setStringList(String key, List<String> value)

هي تماماً ما تحتاجه، لأن قائمتك عبارة عن قائمة سلاسل نصية String List.

يوجد الدالة لقراءة القيمة المخزنة مسبقاً

    // read
    final myStringList = prefs.getStringList('string_list_key') ?? [];
    // write
    prefs.setStringList('string_list_key', ['wael', 'walid', 'wassim']);

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...