मुझे नहीं पता कि यह कोई समस्या या बग है। इसलिए लिख रहा हूं। मैंने कुछ कार्यों को समय-समय पर निष्पादित करने के लिए अलार्म मैनेजर फ़ंक्शन लिखा था। यह समय-समय पर फायरिंग कर रहा है। लेकिन समस्या यह है कि मैं उसके अंदर कुछ प्लगइन्स का उपयोग नहीं कर सकता। मैंने स्थानीय रूप से कुछ डेटा लेने के लिए साझा वरीयता प्लगइन का उपयोग किया। लेकिन अलार्म मैनेजर फ़ंक्शन उस पर शून्य हो जाता है। मुझे नहीं पता क्यों। यह केवल उस अलार्म मैनेजर स्टैटिक फंक्शन के अंदर होता है। मैंने अभी एक और प्लगइन का उपयोग किया है फिर से इसी तरह का काम करने के लिए स्टोरेज प्राप्त करें। लेकिन नतीजा ऐसा ही रहा। मेरे मामले में, मैं सिर्फ एक वॉलपेपर ऐप बनाने की कोशिश कर रहा हूं। मैं बस समय-समय पर वॉलपेपर बदलना चाहता हूं। चयन के लिए प्रकृति, बाइक, कार आदि जैसी कई श्रेणियां हैं। यदि उपयोगकर्ता एक श्रेणी का चयन करता है। तब मैंने सिर्फ एक अलार्म मैनेजर को निकाल दिया और श्रेणी के अनुसार वॉलपेपर को स्वचालित रूप से बदलना चाहिए। अलार्म मैनेजर के स्थिर कार्य के कारण, चयनित श्रेणियों को जानने के लिए मैंने उन्हें स्थानीय लोगों को लिखा था। तो अलार्म मैनेजर स्टैटिक फंक्शन में इसे हथियाने के लिए, मुझे साझा वरीयता और स्टोरेज प्लगइन्स का उपयोग किया जाता है। लेकिन वे दोनों अलार्म मैनेजर में अपेक्षा के अनुरूप काम नहीं कर सकते। मुझे नहीं पता क्यों। क्या यह एक बग है या यह अलार्म मैनेजर के स्थिर कार्य के कारण है? क्या कोई समाधान है या इसे दूर करने का कोई विचार है?

मेरा कोड जब उपयोगकर्ता कुछ श्रेणी के लिए वॉलपेपर सेट करने के लिए बटन पर टैप करता है:

   onPressed: () async {
      print("::::::::::::");
      await AndroidAlarmManager.initialize();
      var yes = await AndroidAlarmManager.cancel(id);
      await AndroidAlarmManager.cancel(id);
     
      categoryScheduled = searchController.text.toString();
      print(yes);

      final box = GetStorage();
      var data = {
        "category": categoryScheduled ,
      };
       await box.write("bg_image", data);

      final prefs = await SharedPreferences.getInstance();
      prefs.setString('counter', categoryScheduled);

      await AndroidAlarmManager.periodic(
        timeInterval,
        20,
        term,
      );
    },

यहां मान लीजिए कि कोई उपयोगकर्ता प्रकृति श्रेणी के तहत वॉलपेपर को ऑटो-चेंज करने के लिए "प्रकृति" जैसी श्रेणी का चयन करता है। हम सिर्फ अलार्म मैनेजर को इनिशियलाइज़ करते हैं। और अगर कोई निश्चित अलार्म निष्पादित हो रहा है तो हम भी रद्द कर देते हैं। जब मैं उस चयनित श्रेणी को स्थानीय रूप से गेट स्टोरेज प्लगइन का उपयोग करके स्टोर करने की कोशिश कर रहा हूं और उसके बाद मैंने साझा वरीयता के साथ भी प्रयास किया। लेकिन मैं इसे अलार्म मैनेजर स्टैटिक फंक्शन में नहीं पकड़ सकता।

मेरा अलार्म प्रबंधक स्थिर कार्य नीचे दिया गया है:

static term() async {
    int pageNumber = 0;
   
final prefs = await SharedPreferences.getInstance();
//here we tries to grab the locally stored keyword using shared preferbnce but it return null.but its fine workin in another function.
final counter = prefs.getString('counter') ?? 0;

//next tried to grab it using another plugin to get storage. its also return null.
    final box = GetStorage();
    var readData = await box.read("bg_image");
    print(readData);
    print("this is category");

    var query = readData["category"];
    var results;

//tries to calling API with selected category. but category returning null.
    final response = await http.get(Uri.parse(
        "https://api.unsplash.com/search/photos/?client_id=7674db521921f5e47a89c6a432205d49db929dadaae45356226372c756e&page=$pageNumber&query=$query"));
    // if (response.statusCode == 200) {
    // itemCount++;
    // Scaffold.of(context).hideCurrentSnackBar();
    // If the call to the server was successful, parse the JSON
    var jsonData = json.decode(response.body);
    print(jsonData.length);
    results = jsonData["results"];
    print(results.length);

    print(results[0]["urls"]["full"]);
    var url = results[0]["urls"]["full"];
    var progressString = Wallpaper.ImageDownloadProgress(url);
    progressString.listen((data) {}, onDone: () async {
//setting walllpaper
      await Wallpaper.homeScreen();

      // scaffoldKey.currentState.showSnackBar(snackBar);
    }, onError: (error) {
      print("Some Error");
    });
  }
1
Akhil Saji 18 अगस्त 2021, 12:05

3 जवाब

सबसे बढ़िया उत्तर

सबसे पहले लोगों द्वारा दिए गए उत्तरों के लिए धन्यवाद। वे मेरे लिए बहुत मददगार थे और कुछ नया ज्ञान प्राप्त किया। पहले उत्तर के अनुसार हमें स्पंदन आइसोलेट का उपयोग करना होगा। लेकिन जब ऐप बंद हो जाता है तो यह काम नहीं करेगा। तो वही सामान होता है स्पंदन स्थानीय अधिसूचना में। इस तरह के काम को करने के लिए हम दो प्लगइन्स का उपयोग कर सकते हैं (मुझे केवल दो प्लगइन्स मिले हैं, और भी हो सकते हैं)

1. स्पंदन अलराम प्रबंधक प्लस

2.कार्य प्रबंधक

जैसा कि ऊपर वर्णित है, मुझे अलराम प्रबंधक के साथ कुछ समस्याएं थीं। वैसे भी मुझे इसके लिए कुछ समाधान मिला। वर्तमान परिदृश्य कॉलबैक फ़ंक्शन में प्लगइन समर्थन (अलाराम प्रबंधक प्लगइन और कार्य प्रबंधक प्लगइन दोनों में) की कमी थी। कार्यकर्ता में कुछ दस्तावेज़ों के अनुसार, यह कहता है कि हमें कॉलबैक फ़ंक्शन में कुछ सामान करने के लिए उन प्लगइन्स को पंजीकृत करना होगा। लेकिन अलाराम प्रबंधक के कॉलबैक फ़ंक्शन के अंदर समान सामान कैसे करना है, इसका कोई पता नहीं है। इस तरह के परिदृश्य के लिए कार्य प्रबंधक अधिक बेहतर हो सकता है। लेकिन कुछ समस्या थी ( मैं नहीं जानता कि यह बग हो सकता है) स्पंदन और वर्कमैनेजर प्लगइन के currebt संस्करण (२.२.३) के बीच। फ़ंक्शन। इसलिए यह मेरे लिए उस कार्य को करने में आसान होगा। लेकिन फिर भी कुछ प्लगइन उस कॉलबैक फ़ंक्शन में समर्थन नहीं करेंगे। इसके लिए हमें ऐसा करने के लिए उन प्लगइन को पंजीकृत करना होगा (आप खोज सकते हैं कि वर्कमैन में प्लगइन कैसे पंजीकृत करें) ager)। अन्यथा आपको इस तरह के काम को करने के लिए मेथड चैनल का उपयोग करना चाहिए। किसी भी तरह से, मेरे मामले में मैं सिर्फ अपने कार्यों के लिए उन दो प्लगइन्स को चाहता था, भगवान की कृपा से कॉलबैक फ़ंक्शन में यह ठीक काम कर रहा था और यह मेरे लिए ठीक काम कर रहा था।

0
Akhil Saji 3 सितंबर 2021, 20:45

स्पंदन स्थानीय सूचनाएं पैकेज का उपयोग करें।

0
THEODORE 18 अगस्त 2021, 09:37

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

0
Dharman 18 अगस्त 2021, 09:42