這是從個人資料頁面顯示下一頁的代碼。在這個編輯頁面,有幾個按鈕可以編輯用戶資訊。當用戶完成編輯時,呼叫 Navigator.of(context).pop() 并再次出現個人資料頁面。
在個人資料頁面:
String userName = "none"; // public string
........
Text(userName),
IconButton(icon: Icons.edit, onPressed: () => Navigator.of(context).pushNamed("/edit"))
在編輯頁面:
IconButton(icon: Icons.edit, onPressed: () => username = "ABCD")
當用戶完成編輯時,在應用欄中按下后退按鈕。此按鈕是 Navigator 的標準,而不是唯一的小部件。
Text(userName)從編輯頁面回傳時,這些代碼不能更改,只顯示舊字串。
那么我怎樣才能再次呼叫這個個人資料頁面呢?還是只重新加載userName字串?
uj5u.com熱心網友回復:
您可以使用狀態管理包,例如RiverPod更新特定的小部件。通過使用Scoped Provider和偵聽該特定值來更新該特定小部件。
關于 RiverPod 的更多資訊
uj5u.com熱心網友回復:
正如 Yash 介紹的那樣,它與.then((value) => setState(() {})).
個人資料頁:
String userName = "none";
.....
Text(userName),
IconButton(icon: Icons.edit, onPressed: () => Navigator.of(context).pushNamed("/edit").then((value) => setState(() {})))
編輯頁面:
setState( () { userName = "ABCDEFG"; })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334996.html
