मेरे पास इस तरह एक चर में संग्रहीत स्ट्रिंग की एक सूची है:

var question = [
  'whats your favorite name',
  'whats your favorite color',
  'whats your favorite shape',
];

और ऐसा कार्य करें जो हर बार जब मैं इसे कॉल करता हूं तो एक चर बढ़ाता है

void _Press(){
  setState((){
    _PressedNo = _PressedNo + 1;
  });

  print(_PressedNo );
} 

और मेरे मचान में मैं जाँच कर रहा हूँ if _PressedNo उस सूची से छोटा है, इसलिए यह हर बार नए प्रश्न के साथ मचान का पुनर्निर्माण करता है जब तक कि मैं इस तरह के प्रश्न समाप्त होने तक बटन दबाता हूं:

return MaterialApp(
  home: Scaffold(
  body:_PressedNo < question.length ? Container( 
    child: RaisedButton(
      child: Text('yes'),
      onPressed:() {
        _Press();
      },
    ), 
  ) : // here i want to go to another page

और इसके बाद : मैं एक और स्पंदन पृष्ठ पर जाना चाहता हूं, लेकिन मैं यहां केवल विजेट जोड़ सकता हूं ताकि कोई समाधान यह कैसे करना है ..

0
ADev 4 नवम्बर 2021, 23:58

1 उत्तर

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

आपको थोड़ा अलग तरीका अपनाना होगा। build विधि को केवल वही चीजें प्रदान करनी चाहिए जो स्क्रीन पर दिखाई देती हैं और किसी विशिष्ट क्रिया या स्थिति परिवर्तन को सीधे ट्रिगर नहीं करती हैं, जैसे कि किसी अन्य पृष्ठ पर नेविगेट करना।

आप इसे _Press() विधि से संभाल सकते हैं:

void _Press() {
  if(_PressedNo < questions.length) {
    setState(() {
      _PressedNo = _PressedNo + 1;
    });
  } else {
    Navigator.of(context).push(...); // navigate to another page

    // optionally set the _PressedNo back to 0
    setState(() { 
      _PressedNo = 0;
    });
  }
}

आपकी निर्माण विधि नहीं बदलनी चाहिए, क्योंकि इस पृष्ठ पर इसे हमेशा एक ही बटन दिखाना चाहिए।

return MaterialApp(
  home: Scaffold(
  body: Container( 
    child: RaisedButton(
      child: Text('yes'),
      onPressed:() {
        _Press();
      },
    ), 
  ),
);

कुछ अन्य संकेत:

  • फ़ंक्शंस और वेरिएबल्स के लिए लोअरकेस का उपयोग करें: _press() और _pressedNo
  • आप फ़ंक्शन में सीधे onPressed जैसे onPressed: _press, पास कर सकते हैं (ध्यान दें कि कोई कोष्ठक नहीं हैं क्योंकि फ़ंक्शन को कॉल नहीं किया जाता है, लेकिन बस साथ ही पास किया जाता है)
2
dumazy 5 नवम्बर 2021, 00:17
1
बहुत बहुत धन्यवाद जो मेरे लिए बहुत मददगार था ..
 – 
ADev
5 नवम्बर 2021, 01:45