मैं SharedPreferences में सहेजे गए सभी को कैसे लोड कर सकता हूं?

मैंने बहुत सारे बूल सहेजे हैं और सभी को एक सूची में लोड करने की आवश्यकता है!

मैं इस तरह से सहेजता हूं:

    SharedPreferences sharedPreferences;
    bool isfavorit;
    
    @override
      void initState() {
        super.initState();
    
        SharedPreferences.getInstance().then((SharedPreferences sp) {
          sharedPreferences = sp;
          isfavorit = sharedPreferences.getBool('${widget.id}');
          // will be null if never previously saved
          if (isfavorit == null) {
            isfavorit = false;
            persist(isfavorit); // set an initial value
          }
          setState(() {});
        });
      }
    
        void persist(bool value) {
        setState(() {
          isfavorit = value;
        });
        sharedPreferences?.setBool('${widget.id}', value);
      }
-1
Marcel 26 अक्टूबर 2020, 21:07

1 उत्तर

सबसे बढ़िया उत्तर
List<bool> prefList = [];
var sharedPreferences = await SharedPreferences.getInstance();
Set<String> keys = sharedPreferences.getKeys();

for(int i=0; i<keys.length ; i++){
  bool value = sharedPreferences.getBool(keys.elementAt(i));
  prefList.add(value);
}

यदि आपके पास लगातार भंडारण में गैर बूल मूल्य है, तो आपको उन मूल्यों को संग्रहीत करने के लिए पहचानने योग्य कुंजी का उपयोग करना होगा। उदाहरण के लिए: - SharePreferences.setBool('bool${widget.id}', value);

अब इस विशेष कीवर्ड का उपयोग यह जानने के लिए किया जा सकता है कि यह बूल वैल्यू है या नहीं

List<bool> prefList = [];
var sharedPreferences = await SharedPreferences.getInstance();
Set<String> keys = sharedPreferences.getKeys();

for(int i=0; i<keys.length ; i++){
  if(key.elementAt(i).contains('bool')){
    bool value = sharedPreferences.getBool(keys.elementAt(i));
    prefList.add(value);
  }
}

संपादित करें: - आपको फ़ंक्शन के अंदर कोड का उपयोग करना होगा और आपको स्ट्रिंग उदाहरण वापस करना होगा: -

Future<List<bool>> getBoolList() async{
  List<bool> prefList = [];
  var sharedPreferences = await SharedPreferences.getInstance();
  Set<String> keys = sharedPreferences.getKeys();

  for(int i=0; i<keys.length ; i++){
    bool value = sharedPreferences.getBool(keys.elementAt(i));
    prefList.add(value);
  }
  
  return prefList;
}

फिर इस फ़ंक्शन को कॉल करें

List<bool> list = await getBoolList();

नोट :- सरल शब्दों में, केवल एसिंक्रोनस फ़ंक्शन आपको उनके अंदर प्रतीक्षा कीवर्ड का उपयोग करने की अनुमति देंगे, और यदि वे कुछ वापस करते हैं, तो वह भविष्य होगा।

1
Arpit Awasthi 27 अक्टूबर 2020, 21:45