setState單擊表單的提交按鈕時觸發我的應用程式中的方法
child: GestureDetector(
onTap: () {
if (_key.currentState!.validate()) {
setState(() {
sendMessage(dropdownValue,_valueController.text);
});
}
},
呼叫的函式:
sendMessage(int user, String text) async {
final sendMessageUri =
Uri.https('mysecrethater.herokuapp.com', '/api/send/');
var response = await http.post(
sendMessageUri,
headers: {
"Access-Control-Allow-Origin": "*",
'Content-Type': 'application/json',
'Accept': '*/*'
},
body: jsonEncode({
'user': user,
'value': text,
}),
);
if (response.statusCode == 201) {
message = 'The message was sent successfully';
} else if (response.statusCode == 406) {
message = 'Positivity detected. Message not allowed.';
} else {
message = 'Some error happened, please try again later.';
}
}
訊息變數是一個全域變數,鏈接到一個Text();
小Text();部件只有在我單擊按鈕兩次時才會更新,而該sendMessage函式被正常呼叫和評估。
uj5u.com熱心網友回復:
首先將您的更改sendMessage()為:
Future<String> sendMessage(int user, String text) async {
final sendMessageUri =
Uri.https('mysecrethater.herokuapp.com', '/api/send/');
var response = await http.post(
sendMessageUri,
headers: {
"Access-Control-Allow-Origin": "*",
'Content-Type': 'application/json',
'Accept': '*/*'
},
body: jsonEncode({
'user': user,
'value': text,
}),
);
if (response.statusCode == 201) {
return 'The message was sent successfully';
} else if (response.statusCode == 406) {
return 'Positivity detected. Message not allowed.';
} else {
return 'Some error happened, please try again later.';
}
}
然后像這樣使用它:
onTap: () async{
if (_key.currentState!.validate()) {
String result = await sendMessage(dropdownValue, _valueController.text);
setState(() {
message = result
});
}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512877.html
標籤:扑镖
下一篇:飛鏢中優化的冒泡排序
