मेरे कोड की विधि हमारे सर्वेक्षण मोबाइल ऐप के प्रश्नों के लिए आवश्यक टाइमआउट को हथियाने वाली है। हालाँकि, विधि केवल शून्य लौटाती है, भले ही हम एक दस्तावेज़ स्नैपशॉट स्थापित करते हैं जिसमें डेटा की एक प्रति होनी चाहिए। हमारे पास एक फॉलबैक हार्ड कोडित है ताकि जब टाइमआउट शून्य हो तो यह एक डिफ़ॉल्ट विजेट लौटाएगा।

हमने विजेट में कई एसिंक्स और प्रतीक्षा की कोशिश की है और यह स्वयं की विधि है और उनमें से कोई भी विजेट को फायरस्टोर दस्तावेज़ से टाइमआउट के लिए प्रतीक्षा करने में सक्षम नहीं लगता है।

const fiveSeconds = Duration(seconds: 5);
Future<int> getTimeOutData() async{
  int toReturn;
  Firestore.instance.collection("config").getDocuments().then((DocumentSnapshot) async=>{
    Future.delayed(fiveSeconds, () async => toReturn = await DocumentSnapshot.documents[0]['timeout']),
    print( toReturn)
  });
  return toReturn;
}
Widget _buildListItem(BuildContext context, DocumentSnapshot doc) {
  return ListTile(
    title: Text(
      doc['question_text'].toString(),
      style: Theme.of(context).textTheme.headline,
    ),
    dense: true,
    trailing: Icon(Icons.keyboard_arrow_right),
    contentPadding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 5.0),
    onTap: () async{
      timeout= await getTimeOutData();
      envelope = new Envelope(doc['complete'], doc.documentID, doc['user'],
          doc['question'], doc['answer_text'], doc['answer_type'], doc['time_stamp']);
       Navigator.push(
        context,
         MaterialPageRoute(
          builder: (context) {
            return ViewAnswerController(envelope,  timeout);
          },
        ),
      );
    },
    selected: true,
  );
}

मैं 1 मिलीसेकंड की अपेक्षा करता हूं लेकिन वास्तविक मान विधि के भीतर प्रिंट पर और बाद में एक अलग विजेट में चेक पर शून्य है।

0
Nathaniel Payne 26 जून 2019, 23:33

1 उत्तर

सबसे बढ़िया उत्तर
const fiveSeconds = Duration(seconds: 5);
Future<int> getTimeOutData() async{
  int toReturn;
  await Firestore.instance.collection("config").getDocuments().then((DocumentSnapshot) async=>{
    await Future.delayed(fiveSeconds, () async => toReturn = await DocumentSnapshot.documents[0]['timeout']),
    print( toReturn)
  });
  return toReturn;
}

कोई बात नहीं मुझे बस कुछ और इंतजार की जरूरत है क्योंकि .then() भी एक फ्यूचर ऑब्जेक्ट है।

0
Nathaniel Payne 26 जून 2019, 22:09