亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

flutter setState 在使用 Navigator.push 時彈出頁面

flutter setState 在使用 Navigator.push 時彈出頁面

嗶嗶one 2023-09-14 20:19:53
我編寫了三頁應用程序的簡單代碼,在第三頁中,當它使用“SetState”時,它返回到第二頁,但僅在第三頁中發生,當我在第二頁中使用“setState”時,它工作正常。我還嘗試使用“Navigator.of.push”在頁面之間導航,但 setState 只是沒有執行任何操作,這里是我的代碼示例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 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我猜你為什么在使用 Navigator.push 更改頁面之前使用設置狀態方法。SetState 應該用于更改當前所在頁面上的數據狀態,而不是用作“全局”數據存儲。

我建議你幾個選擇:

  • 使用所有頁面共享的“頂級”提供程序并更新其值:Provider

  • 使用本地數據庫SQLite

查看完整回答
反對 回復 2023-09-14
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

您需要為每個具有構建功能的單獨的類創建上下文,這樣每個頁面的上下文都是新的,這樣您就必須創建有狀態的類,然后創建該頁面的另一個類



查看完整回答
反對 回復 2023-09-14
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號