json - Dart boolean在更新后保持不变

标签 json rest flutter dart

我有一个登录页面,用户凭据在其中检查来自api的状态响应。我编写了一个函数,该函数从支票中返回了将来的 bool(boolean) 值,但是我的问题是,如果用户第一次尝试输入错误的信息,但在该函数返回为false之后,他们总是尝试登录。

我已经将用户输入打印到控制台,它显示旧信息已更新,但仍然返回为false。
future 的 bool(boolean) 函数:

bool loginCheck;
Future<bool>check() async{
try{
await fetchResponse().then((response){
if(response.status == "ok"){
return loginCheck = true;
}else {
  return loginCheck = false;
}
});
    }
    catch (e){
      print(e);
    }
    return loginCheck;
} 

API响应函数:
Future <SubsonicResponse>fetchResponse() async{
  try{
userClear();    
loginUser();
var authresponse = await http.get(authURL);
if (authresponse.statusCode == 200){
var jsondata = jsonDecode(authresponse.body);
var data = apicallFromJson(jsondata);
var response = data.subsonicResponse;
return response;
} else{
}
}
 catch (e){
    print(e);
    }
}

其他功能:
void loginUser() {
serveraddress = _serveraddressController.text;
password = _passwordController.text;
username = _usernameController.text;
print(username);
print(password);
print(serveraddress);
}

void loginclear(){
_serveraddressController.clear();
_passwordController.clear();
_usernameController.clear();
}

void userClear(){
  loginCheck = null;
  serveraddress = null;
  password = null;
  username = null;
}

如您在上面看到的,我尝试在请求之前清除用户输入变量,并更新为最新的用户输入,但仍然返回false
登录按钮:
              onPressed: () {
              check().then((loginCheck){
              print(loginCheck);
              if(loginCheck == true){
              loginclear();
              return Get.toNamed('/home');
              } else {
              return showAlertDialog(context);
            }
          });
        },

如果用户在第一时间输入正确的信息,则不会有任何问题。

最佳答案

您需要使用某种状态管理来更新变量的状态,即使用setState()(或流或基于用例的内容)来更新变量。

只是简单地将用户 call 清除将不起作用。

关于json - Dart boolean在更新后保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62253492/

相关文章:

php - 如何从 PHP 调用 RESTful WCF 服务

python - 让 Flask 只接受路由上的 POST 请求

rest - postWith 是否切换了我的请求的 Content-Type?

datetime - 如何在 showDatePicker flutter 中禁用编辑按钮/输入模式

flutter - 状态更改时如何强制立即重绘 FutureBuilder?

Flutter 联系人插件

php - 检查属性值是否为 null 或空

iphone - 从不同的 View Controller 访问来自 NSJSONSerialization 的数据

android - 使用可选字段解析 JSON

java - 为循环优化 JSonArray