【发布时间】:2020-11-27 12:34:19
【问题描述】:
首先,很难为我解释我的问题,对于不好的解释,从现在开始很抱歉。 我正在调试我的颤振项目,有些东西引起了我的注意。
Widget _loginbutton() {
return Container(
child: SizedBox(
width: MediaQuery.of(context).size.width,
height: 35.0,
child: RaisedButton(
onPressed: () {
press();
if (check == true) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => UserPage()),
);
} else {}
},
color: Colors.white70,
child: Text(
'Giris Yap',
style: TextStyle(fontSize: 20),
),
),
),
);
}
这是我的登录按钮和
void press() async {
final response = await http.post(url,
headers: {"Content-type": "application/json", "accept": "/"},
body: json.encode({
'username': id,
'password': pwd,
'deviceId': devid,
}));
if (response.statusCode == 200) {
var jsonResponse = jsonDecode(response.body);
print("OK");
if (jsonResponse['success'] == true) {
// globaluserData.setName(jsonResponse['data']['firstName'].toString());
check = true;
}
} else {
check = false;
print("NOT OK");
}
print(response.body);
}
这是我通过 onPress 调用的新闻功能。
在调试模式下,调试器转到 onPressed,然后是 press() 函数。在 press() 函数中,它对 json 数据进行编码,在得到响应之前,它会退出 press() 函数并继续调试 press() 下 _loginbutton 中的 if 语句。如果检查为真,它会做它应该做的事情,然后它会继续从 press() 函数中的最终响应行进行调试并完成它。我的检查一开始是假的,因为如果它一次变为真,那么即使我没有得到 200 状态代码,我在 _loginbutton 中的 if 语句也会再次工作,因为 _loginbutton 中的 if 语句在检查可能改变之前工作。为什么调试器没有完成 press() 函数进行调试,然后继续休息,我该如何解决这个问题。我用 VSCode 编写。
提前致谢!
【问题讨论】:
-
据我了解,这是因为异步而发生的,程序不会等待响应继续。但仍然没有解决方案。
标签: flutter debugging dart vscode-debugger