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

Flutter模拟器不展示API注册成功响应但终端可查看该如何解决?

问题原因与解决方案

核心问题1:成功提示代码被注释

你代码中成功分支下的SnackBar弹出逻辑被双斜杠//注释掉了,自然不会在模拟器弹出提示。错误分支你应该是写了对应的展示逻辑所以能正常显示。

核心问题2:succMsg赋值未触发UI刷新

你给succMsg变量赋值的操作没有包裹在setState方法中,即便你的页面有写展示succMsg的组件,也不会触发UI重绘,自然看不到成功提示。

核心问题3:接口返回无token字段会触发空异常

从你终端打印的接口返回结果看,响应体里只有status、message、seedPhase三个字段,没有你代码中取的token字段,执行sharedPreferences.setString("token", jsonResponse['token']);会直接抛出空指针异常,打断后续代码执行,即便你没注释SnackBar代码也跑不到对应逻辑。

修复代码示例

Register(String email, userid, pass, confpass) async {
  SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
  Map data = {
    'email': email,
    'userId': userid,
    'password': pass,
    'confirmPassword': confpass
  };
  var jsonResponse = null;
  var response = await http.post(Uri.parse("http://10.0.2.2:8000/register"), body: data);
  if(response.statusCode == 201) {
    jsonResponse = json.decode(response.body);
    print(jsonResponse);
    if(jsonResponse != null) {
      // 把状态更新和变量赋值都放到setState里
      setState(() {
        _isLoading = false;
        succMsg = jsonResponse['message'];
      });
      print("success: ${response.body}");
      // 先判断token是否存在再存储,避免空异常
      if(jsonResponse.containsKey('token') && jsonResponse['token'] != null) {
        sharedPreferences.setString("token", jsonResponse['token']);
      } else {
        print("后端未返回token字段,请检查接口逻辑");
      }
      // 取消SnackBar代码的注释
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(jsonResponse['message'])));
      // 需要跳转的话也取消下面这行的注释
      //Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => MainPage()), (Route<dynamic> route) => false);
    }
  }
  else {
    setState(() {
      _isLoading = false;
      errorMsg = response.body;
    });
    print("The error message is: ${response.body}");
    // 错误分支的提示逻辑保留即可
    ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMsg), backgroundColor: Colors.red,));
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:04