मैंने तीन पेज ऐप का सरल कोड लिखा था और तीसरे पेज में जब यह 'सेटस्टेट' का उपयोग करता है तो यह दूसरे पेज पर वापस आ जाता है लेकिन केवल तीसरे पेज में ऐसा होता है, जब मैं दूसरे पेज में 'सेटस्टेट' का उपयोग करता हूं तो यह ठीक काम करता है। मैंने पृष्ठों के बीच नेविगेट करने के लिए 'Navigator.of.push' का उपयोग करने का भी प्रयास किया लेकिन फिर सेटस्टेट ने यहां कुछ भी नहीं किया मेरे कोड का एक उदाहरण
String check="go to next page";
String check2="state1";
Widget page3()
{
return return FlatButton(
child:Text(check2)
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.blue[100])),
color: Colors.white,
onPressed: (){
setState((){check2="state3"});
});
}
Widget Profile()
{
return FlatButton(
child:Text(check)
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.blue[100])),
color: Colors.white,
onPressed: (){
setState((){check2="state3"});
Navigator.push(
context,
MaterialPageRoute(builder: (context) => page3()),
)
});
}
Widget Biuld(BuildContext context)
{
return return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(widget.title),
),
body:
FlatButton(
child:Text("press to start")
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.blue[100])),
color: Colors.white,
onPressed: (){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => profile()),
);
}));
}
और परिणाम मुझे मिलता है कि पहला बटन दबाते समय यह पेज 2 पर जाता है और जब मैं दूसरा बटन दबाता हूं तो यह दूसरा बटन टेक्स्ट बदल देता है और पेज तीन पर जाता है, लेकिन फिर जब मैं पेज तीन पर बटन दबाता हूं तो यह वापस चला जाता है दूसरा पृष्ठ। navgitor.of का उपयोग करते समय यह दूसरे पृष्ठ पर वापस नहीं आता है लेकिन यह टेक्स्ट को भी नहीं बदलता है
2 जवाब
मैं अनुमान लगा रहा हूं कि आप नेविगेटर.पुश के साथ पेज बदलने से पहले सेट स्टेट मेथड का उपयोग क्यों कर रहे हैं। सेटस्टेट का उपयोग उस पृष्ठ पर डेटा की स्थिति को बदलने के लिए किया जाना चाहिए जिसमें आप वर्तमान में हैं, "वैश्विक" डेटा संग्रहण के रूप में उपयोग नहीं किया जाना चाहिए।
मैं आपको कुछ विकल्प सुझाता हूं:
- सभी पृष्ठों द्वारा साझा किए गए "शीर्ष स्तर" प्रदाता का उपयोग करें और इसके मान को अपडेट करें: प्रदाता
- स्थानीय डेटाबेस का उपयोग करें SQLite
संपादित करें: संभवत: इससे आपको प्रबंधन में मदद मिल सकती है प्रदाता का उपयोग कर राज्य
आपको बिल्ड फ़ंक्शन के साथ प्रत्येक को अलग-अलग वर्ग की आवश्यकता है ताकि संदर्भ प्रत्येक पृष्ठ पर नया हो, इस तरह आपको स्टेटफुल क्लास बनाना होगा और फिर पेज के साथ एक और क्लास बनाना होगा