You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter条件语句未按预期执行:API返回匹配值却进入else分支

Flutter条件分支未按预期执行问题

我有一段Flutter代码,其中的条件语句未按预期执行,代码如下:

onPressed: () async {
  if ((_formKey.currentState != null && _formKey.currentState!.validate()) ||
      (_formKey1.currentState != null && _formKey1.currentState!.validate())) {
    
    String apiResponse = await loginAPI(email, password);
    print("api response is: $apiResponse");

    if (apiResponse == 'false') {
      setState(() {
        isError = true;
        isErroremail = false;
        print("isError variable is set to true");
      });
    } else if (apiResponse == 'username false') {
      setState(() {
        isErroremail = true;
        isError = false;
        print("isErroremail variable is set to true");
      });
    } else {
      setState(() {
        isError = false;
        isErroremail = false;
        print("isError and isErroremail variables are reset.");
      });
    }

    if (!isError && !isErroremail) {
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text("processing Data")),
      );
    }
  }
  print("button has been pressed");
},

尽管API返回内容为flutter: api response is: "username false",但代码并未进入else if (apiResponse == 'username false')分支,打印日志验证如下:

flutter: api response is: "username false"
flutter: isError and isErroremail variables are reset.
flutter: button has been pressed

问题原因

API返回的字符串包含首尾双引号(实际值为"username false"),但判断条件是和不带双引号的'username false'做全等比较,两者不匹配,因此代码直接走到else分支。

解决方法

方法一:去除API返回字符串的首尾双引号

在获取API响应后,先处理字符串移除多余引号,兼容性更强:

String apiResponse = await loginAPI(email, password);
// 精准去除首尾的双引号
apiResponse = apiResponse.trim();
if (apiResponse.startsWith('"') && apiResponse.endsWith('"')) {
  apiResponse = apiResponse.substring(1, apiResponse.length - 1);
}
print("api response is: $apiResponse");

方法二:修改判断条件匹配带引号的字符串

直接将判断条件中的字符串改为带双引号的形式:

else if (apiResponse == '"username false"') {
  setState(() {
    isErroremail = true;
    isError = false;
    print("isErroremail variable is set to true");
  });
}

内容的提问来源于stack exchange,提问作者Zak345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:43:10