Flutter应用物理设备无法连接本地Flask服务器5000端口的解决方法
解决Flutter物理设备访问本地Flask API的端口问题
1. 替换API地址中的localhost为电脑局域网IP
- 找到Flutter代码里调用API的基础URL,把原地址中的
localhost替换成电脑在局域网内的IPv4地址。 - 查看电脑局域网IP的方法:
- Windows:打开命令提示符,执行
ipconfig,找到对应网络适配器下的IPv4地址。 - macOS/Linux:打开终端,执行
ifconfig或ip addr,找到对应网络接口的inet地址。
- Windows:打开命令提示符,执行
- 示例:若电脑IP为
192.168.3.10,则API地址改为http://192.168.3.10:5000/api/xxx。
2. 调整Flask服务器的监听配置
- 启动Flask时,不能仅绑定
localhost,需绑定0.0.0.0以允许局域网设备访问:
修改Flask启动代码:
或用命令行启动:if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)flask run --host=0.0.0.0 --port=5000
3. 检查电脑防火墙设置
- 确保Windows/macOS防火墙允许5000端口的TCP连接:
- Windows:打开「Windows Defender防火墙」→ 高级设置 → 添加入站规则,允许5000端口的TCP请求。
- macOS:打开「系统设置」→ 网络 → 防火墙 → 选项,添加Flask进程或直接允许5000端口。
4. 确认设备与电脑在同一局域网
- 物理设备需和电脑连接同一WiFi(避免使用电脑热点,部分热点会隔离设备与主机),可通过ping命令验证连通性:
在设备终端类APP中ping电脑的局域网IP,或在电脑上ping设备IP,能通则网络无问题。
5. Android设备额外配置
- 检查
AndroidManifest.xml是否添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - Android 9及以上默认禁止明文HTTP请求,开发阶段可在
<application>标签中添加:
注:正式发布应用请勿使用此配置,需改用HTTPS。android:usesCleartextTraffic="true"
6. 验证端口监听状态
- 在电脑上检查5000端口是否被Flask占用:
- Windows:执行
netstat -ano | findstr :5000 - macOS/Linux:执行
lsof -i :5000
确保输出中存在Flask进程的相关信息,说明端口正常监听。
- Windows:执行
内容的提问来源于stack exchange,提问作者NIKHIL
相关产品推荐
相关产品推荐

