我正在嘗試了解如何使用新資料重繪 我的應用程式螢屏。該應用程式是一個儀表板,其中包含多個作業卡,當另一個用戶將某些內容應用于該卡時,應用程式中有一個重繪 按鈕,所有用戶都可以按下該按鈕以獲取最新版本的更新。我知道愚蠢的修復,但我對 atm 毫無頭緒......它的夏天和非常炎熱的任何指導將非常非常感激。我有一個函式 refreshLists,在這個函式中我有一堆函式呼叫,這些函式向我的 API 發送資料請求。我的問題。我無法理解如何從我的 asp.net 6 Web API 發送重繪 請求,以便在資料更新時重繪 螢屏。到目前為止,我的解決方案是使用 IconButton 并且在按下時它是這樣的
onpressed() async {
await refreshLists();
setstate(){};
}
為什么我必須單擊兩次按鈕才能使螢屏更新新資料。而不是運行該函式,然后當串列全部更新時,螢屏將被重建。為任何幫助歡呼所有答案將不勝感激。
=========== 更新 ============= 重繪 串列方法向我的請求檔案發送呼叫以向我的 Web api 發送某個 http 請求。
refreshLists() {
getAllClients();
getAllJobs();
getAllJobsStatusDefined();
getSortedJob();
}
這是我的請求如何作業的示例。
Future getAllClients() async {
client.badCertificateCallback =
((X509Certificate cert, String host, int port) => true);
HttpClientRequest request =
await client.getUrl(Uri.parse("$emulatorHost/Clients"));
request.headers.add("Authorization", "Bearer " jwt);
HttpClientResponse result = await request.close();
if (result.statusCode == 200) {
List<dynamic> jsonData =
jsonDecode(await result.transform(utf8.decoder).join());
if (listCustomers.isNotEmpty) {
listCustomers.clear();
for (var i in jsonData) {
listCustomers.add(
new Customer(
i['clientID'],
i['clientName'],
i['address'],
i['phone'],
),
);
}
} else {
for (var i in jsonData) {
listCustomers.add(
new Customer(
i['clientID'],
i['clientName'],
i['address'],
i['phone'],
),
);
}
}
}
}
您可以看到請求方法檢查串列是否有資料,如果有,它會清除串列并添加所有新的更新資料。
簡單示例 https://github.com/Riley-Howley/FlutterRefreshHelp
uj5u.com熱心網友回復:
解決此問題的一個簡單方法是創建一個流構建器并將流設定為您的函式以重繪 串列。
或者您可以使用任何狀態管理,以便在有資料更改時通知所有偵聽器
uj5u.com熱心網友回復:
你描述了2個問題。要從服務器觸發資料更新,您需要建立 web-socket 連接或使用第三方服務,如 firebase。
此外,“設定狀態”是一個基本的顫振構建塊,您應該在特定情況下使用它。通常,當您構建應用程式時,您希望使用無狀態小部件和狀態管理器來告訴 UI 何時以及重繪 什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408835.html
標籤:
