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

Flutter中http.get()执行后代码停止,无打印输出的原因排查

Flutter HTTP请求服务器收到但后续print不执行的原因分析

我运行的Flutter应用在按钮点击时执行以下代码:

try {
    final response = await http.get(

      Uri.parse('http://192.168.1.9:3000')

    );

    print('response statusCode: ${response.statusCode}');
} catch (e) {
    print('error: ${e.toString()}')
}

对应IP地址上运行着Express服务器,服务器能识别到请求,看似http.get()请求成功,但后续的print语句从未执行,请问这是什么原因?

可能的原因及解决办法

  • 服务器未返回响应
    这是最常见的问题。你的Express服务器虽然能检测到请求,但如果代码里没调用res.send()、res.json()这类发送响应的方法,请求会一直处于挂起状态,Flutter端的await http.get()会一直等待,永远走不到后续的print语句。
    检查你的Express代码,确保处理完请求后发送了响应,比如:

    app.get('/', (req, res) => {
      console.log('收到请求');
      res.send('请求已处理'); // 必须添加这行或类似的响应发送代码
    });
    
  • catch块语法错误
    你代码里的catch块最后一行print('error: ${e.toString()}')缺少分号;,虽然Dart在某些场景下允许省略分号,但这可能导致运行时异常,打断整个try-catch块的执行。补上分号后再测试:

    catch (e) {
        print('error: ${e.toString()}');
    }
    
  • 输出被日志过滤或环境限制
    若你是在release模式下运行Flutter应用,print语句的输出可能被系统压制。另外Android设备的logcat可能过滤了Flutter日志,你可以通过flutter logs命令查看完整的应用日志,避免遗漏输出。

  • 请求被意外中断
    如果按钮点击后页面被快速销毁(比如跳转页面),异步请求的后续代码可能不会执行。检查按钮点击后的逻辑,确保页面在请求完成前没有被销毁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 23:12:11