初来乍到 就遇上了这样的bug

1,786 阅读1分钟

      最近想做一个APP,从git上下载了一个项目就开始研究,作为一个小白,只能是按部就班根据网上的教程来安装android studio,配置flutter环境,这些都很顺利,但是当部署起来项目后,突然报错:

     Bad state: Insecure HTTP is not allowed by platform 看到这样的bug, 起初以为是访问接口的问题,但是通过postman访问接口正常,这个猜测排除。后来又怀疑是我的模拟器俩不上网导致的,可是在模拟器上访问百度是没有问题的,后来又google这个问题,但是没有几个有用的信息。最终没有办法了,只能硬着头皮去看dart的代码:

看到这里大概猜到了flutter是对http有限制,后来去flutter的官网上看,确实找到了源头:

原来安卓从sdk 27开始http访问很多情况下会被禁止。如果你的接口支持https,直接改成https的即可,如果接口不支持https,可以通过配置解决:

<application    
    android:name="io.flutter.app.FlutterApplication"    
    android:label="aaa"    
    android:icon="@mipmap/ic_launcher"  
    # 添加  network_security_config
    android:networkSecurityConfig="@xml/network_security_config"    
>

然后在res目录下创建xml文件,新建network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

这样就可以访问http的接口了。亲测,我的问题解决了,如果有小伙伴遇到相同的问题,可以借鉴我的方法,如果还是没有解决,可以给我留言哦。