我有一個加載子小部件的頁面(有狀態小部件),這個子小部件是一個網格,它加載另一個子小部件單個網格項詳細資訊。
在單個網格專案詳細資訊上,有 InkWell,當點擊時我導航到新頁面。
網格小部件和單個網格項都是無狀態小部件
當我使用后退按鈕從新頁面回傳時,我想更新預覽頁面。
例如,從我擁有的單個網格專案中:
Navigator.pushNamed(
context,
SingleMoviePage.routeName,
arguments: movie,
).then((_){
var pressed = Provider.of<MoviesListProvider>(context,listen: false).listPageButtonPressed;
if (pressed) {
updateChanges();
}
});
我可以通過將 updateChanges 函式傳遞給網格小部件并從網格小部件傳遞給頁面來更新頁面。但是有沒有更好的方法來使用 provider 呢?或者不需要將功能從孩子發送給父母以及從父母發送給祖父母的另一種方式?
uj5u.com熱心網友回復:
首先,您可以通過將資料源放入 a 中來做到這一點ChangeNotifier,當它更新時,您可以使用notify所有依賴它的小部件。
另一個快速的解決方案是使用如下方式訪問 statful 小部件的狀態GlobalKey:
GlobalKey<yourStateFulWidget> myKey = GlobalKey()
然后訪問和編輯資料,例如:
myKey.currentState!.someFunctionOrData();
注意:為了更好地了解如何執行第一個解決方案,我建議您閱讀 Flutter 團隊的官方示例:
https://docs.flutter.dev/development/data-and-backend/state-mgmt/simple
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442452.html
