咕咕天啦!我是Flutter的新手,我一直在尝试通过REST API提取数据。在Android Studio上,一切正常,所以我想我的代码没有错。
我为确保代码能正常工作而做的事情: 1.)在android模拟器中运行代码; 2.)使用真实设备运行代码(启用USB调试)。
它工作得很好。
但是当我用它构建一个apk文件并将其安装在我的设备上时,它不再进行API调用(或无法?)。我做到了,当应用程序运行initState()
时,它等待数据加载。当数据尚不可用时,CircularProgressIndicator()
将占据整个屏幕。
如果我通过已安装的apk文件运行该应用,则该文件仅为CircularProgressIndicator()
。意思是,没有数据正在加载和显示。但是当我在AndroidStudio中运行代码时,就会显示数据。
我正在使用http
软件包。我不确定自己做错了什么或缺少了什么。
其他注意事项:AndroidManifest
文件中我没有进行任何更改,只是通过官方documentation遵循了在Flutter中构建apk文件的所有步骤。
答案 0 :(得分:3)
像亚历山德斯·弗朗西斯(Alexandrfrfr)所说,这的确确实是大部分时间都是由于失踪造成的。
<uses-permission android:name="android.permission.INTERNET" />
您不需要
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
用于REST API。
在Flutter中,调试时可以隐式访问Internet,但是在发行版本中,您需要明确声明此权限。
确保已将http软件包添加到pubspec.yaml文件中,并且已正确缩进两个空格:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
http: ^0.12.0+4
答案 1 :(得分:0)
您是否已将Internet权限添加到清单?如果您要通过Android应用访问互联网,则需要在应用标签上添加互联网许可。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />