[英]How to refresh flutter UI on AlertDialog close?
我正在研究某種時間跟蹤應用程序。 它背后的主要思想很簡單——為一個想要的項目添加小時數並顯示每天的小時數總和。
我為此使用 Flutter 和 dart,我有以下內容: - 每個工作日的卡片列表 - 卡片具有手勢檢測器點擊 - 此操作將顯示所選日期的所有項目 - AlertDialog 彈出窗口以添加小時數
我正在嘗試在警報對話框彈出關閉時刷新所選日期的總小時數,而無需重新加載所有數據。
有人可以幫助我了解如何實現刷新嗎?
到目前為止我嘗試過的內容如下:
為此所需的行為是單擊卡片並顯示所選日期的所有項目。 添加新值后,我想返回到同一個地方(使用打開的卡),新添加的項目將顯示在列表中,以及當天更新的總小時數。
現在,我已經部分完成了編輯。 我打開卡片並編輯現有項目之一。 數據已保存,但當我返回上一個屏幕時,我無法更新 UI 上的小時數。 當我再次打開編輯屏幕時,顯示的數據符合預期。
首先,您需要在Stateful Widget
中調用您的showDialog
以便訪問(顧名思義)狀態。 然后,在該屏幕中,您可以調用一個方法並顯示您的對話框,它將返回一個Future<void>
這意味着您可以在對話框關閉后執行 so 操作,例如
showDialog(// Yours params).then((_)=>setState((){}));
並且您的 UI 將更新以匹配更改。
當想要刷新屏幕時,在彈出的導航器中從對話框中返回 true
FlatButton(
onPressed: () {
Navigator.of(context).pop(true);
},
child: Text("Close"))
結果為真時刷新屏幕
final result = await showDialog<bool>(
context: context,
builder: (context) => MyDialog(),
)
if(result){// refresh screen}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.