我使用 post 方法在 initState 中獲取 api 資料/response.body 并獲取所有回應/資料,然后將其放入我的變數surveyData中,但是當我加載頁面時,使用由 response.body 長度回圈的小部件,它會出錯并說response.body.length 為空,但是當我保存文本編輯器/熱多載時,輸入的所有資料不再為空,并且出現小部件。
僅供參考:http.post 方法是我自己的函式,不是來自import 'package:http/http.dart' as http;所以不要介意
包含回應的變數
dynamic surveyData;
初始化狀態代碼
@override
void initState() {
super.initState();
// GET PAGES
surveyPages = widget.surveyPages;
// GET FORM DETAIL
http.post(
'survey-pre-mitsu/form-detail',
body: {
"survey_form_header_id": 1,
},
).then(
(res) {
surveyData = res['data'];
},
);
}
由surveyData.length 回圈的小部件
for (var i = 0; i < surveyData.length; i )
AdditionalForm(questionLabel: surveyData[i]['label'],
questionType: surveyData[i]['type'],),
這是什么錯誤

這就是我進行熱多載時的樣子

uj5u.com熱心網友回復:
首先,我建議你使用future builder來解決這個問題。
uj5u.com熱心網友回復:
首先,我建議將 post(即使它是您自己的代碼)作為異步操作執行,因此不在initState()內部。最好將邏輯寫在一個單獨的類/檔案中,其中包含提供程式包之類的包。先試試這個,然后再發布錯誤。
uj5u.com熱心網友回復:
您需要添加一些延遲,在此延遲中您可以顯示加載圖示。對于延遲,您可以使用:
Future.delayed(const Duration(milliseconds: 500), () {
// Here you can write your code
setState(() {
// Here you can write your code for open new view
});
});
這將解決您的問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439522.html
上一篇:HTTPCLIENT上傳檔案C#
