最近想做一个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的接口了。亲测,我的问题解决了,如果有小伙伴遇到相同的问题,可以借鉴我的方法,如果还是没有解决,可以给我留言哦。