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

Flutter中MySQL数据下拉列表在安卓手机无法运行求助

问题分析与解决方案

你遇到的核心问题是Flutter应用在本地模拟器能正常访问后端接口,但安卓真机无法连接,即便替换IP也无效,这通常是网络配置、权限或后端服务绑定的问题,以下是针对性解决步骤:

1. 添加安卓网络权限

安卓默认禁止应用访问网络,需在android/app/src/main/AndroidManifest.xml中添加权限,放在<manifest>标签内、<application>标签外:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 确保设备同局域网且IP正确

  • 确认安卓手机和运行PHP后端的笔记本连接同一个WiFi网络
  • 查看笔记本的局域网IP(Windows用ipconfig,Mac/Linux用ifconfig或ip addr),比如192.168.1.100
  • 将代码中的URL替换为该IP:
    var url = Uri.parse("http://192.168.1.100/dropdown_pratice/select.php");
    

3. 修改PHP服务器绑定地址

若PHP服务器(如XAMPP/WAMP)仅绑定127.0.0.1,外部设备无法访问:

  • 打开Apache的httpd.conf文件,找到Listen 127.0.0.1:80,改为Listen 0.0.0.0:80(允许所有IP访问)
  • 重启Apache服务,确保后端服务可被局域网设备访问

4. 解决安卓9+明文网络限制

安卓9及以上默认禁止HTTP明文请求,需配置网络安全策略:

  1. 在android/app/src/main/res/xml目录下创建network_security_config.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  1. 在AndroidManifest.xml的<application>标签中添加配置:
android:networkSecurityConfig="@xml/network_security_config"

5. 检查笔记本防火墙设置

确保笔记本防火墙允许80端口(或PHP服务器使用的端口)的入站连接,否则真机无法请求后端接口。

额外代码优化建议

  • 给categoryItemList指定类型,避免类型不安全:
    List<Map<String, dynamic>> categoryItemList = [];
    
  • 增加接口请求失败的处理逻辑:
    if (response.statusCode == 200) {
      // 现有逻辑
    } else {
      print("请求失败,状态码:${response.statusCode}");
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:35:36