颤振onTap,REST调用在无限循环中结束
我喜欢在flatter中创建一个简单的登录。当运行代码时,它会陷入无限循环。我已经发现在构建方法中调用RESTAPI是一种“糟糕的做法”,但我不知道如何避免这种情况 我如何解决这个问题?在不设置“build”方法中的功能的情况下,通过按键/点击处理REST调用的最佳方法是什么 我的登录视图如下(细节省略): 这被称为“PrimaryButton”,如下所示:颤振onTap,REST调用在无限循环中结束,rest,flutter,Rest,Flutter,我喜欢在flatter中创建一个简单的登录。当运行代码时,它会陷入无限循环。我已经发现在构建方法中调用RESTAPI是一种“糟糕的做法”,但我不知道如何避免这种情况 我如何解决这个问题?在不设置“build”方法中的功能的情况下,通过按键/点击处理REST调用的最佳方法是什么 我的登录视图如下(细节省略): 这被称为“PrimaryButton”,如下所示: onTap: widget.onTab(context) 我现在的问题是,每当我按下“登录”按钮时,它就会调用函数(为了测试,它是错误的
onTap: widget.onTab(context)
我现在的问题是,每当我按下“登录”按钮时,它就会调用函数(为了测试,它是错误的),并陷入无限错误循环中。当我按下某处关闭对话框时,它再次被触发。它似乎也会被一次点击触发多次。我发现了问题。它不是由代码引起的,而是由
onTab
lambda(service.logiuser
)中使用的REST请求引起的。响应时间比预期长得多,因此调用无法正确返回
对于这类“错误”请求,我在REST请求上使用超时来解决问题。我发现了问题。它不是由代码引起的,而是由
onTab
lambda(service.logiuser
)中使用的REST请求引起的。响应时间比预期长得多,因此调用无法正确返回
对于这类“错误”请求,我在REST请求上使用超时来解决问题
void performLogin(BuildContext context) {
final String userName = _userName.text.trim();
final String password = _password.text.trim();
if(password.isEmpty || userName.isEmpty) {
return;
}
UserService service = UserService();
service.loginUser(userName, password).then((val) {
Navigator.push(
context, MaterialPageRoute(builder: (context) => MainLayout()));
}).catchError((e) {
showDialog(context: context,
builder: (context) {
return AlertDialog(
content: Text("ERROR")
);
});
});
}
onTap: widget.onTab(context)