在调试模式下,一切看起来都很好。我从 API 获取答案和数据列表。但是创建 app-release.apk 并将其安装到我的手机上后,就不再有互联网连接了。
这是我的代码:
ScopedModelDescendant<ReportPosViewModel>(
builder: (context, child, model) {
return FutureBuilder<List<Invoice>>(
future: model.invoices,
builder: (_,
AsyncSnapshot<List<Invoice>> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.active:
case ConnectionState.waiting:
return Center(
child:
const CircularProgressIndicator());
case ConnectionState.done:
if (snapshot.hasData) {
// Something todo
}
else if (snapshot.hasError) {
return NoInternetConnection(
action: () async {
await model.setInvoice();
await getData();
},
);
}
}
},
);
},
),
打开位于
AndroidManifest.xml
的 <your_project>/android/app/src/main
文件并添加以下行:
<manifest xmlns:android="...">
<uses-permission android:name="android.permission.INTERNET"/> <!-- Add this -->
</manifest>
从这里:
如果您的应用代码需要访问互联网,请添加 android.permission.INTERNET 权限。标准模板不包含此标签,但允许在开发过程中访问互联网,以实现 Flutter 工具和正在运行的应用程序之间的通信。
如果你放了
<uses-permission android:name="android.permission.INTERNET"/>
在
AndroidManifest.xml
如果不起作用,请尝试检查设备的连接性。 Android 设备上的移动数据或 Wi-Fi。尝试使用 Google Chrome 浏览器进行 Google 搜索。
如果不起作用,请允许
8.8.8.8
在您所使用的计算机的 DNS 设置中。
将此添加到文件 android/app/src/main/AndroidManifest.xml 的包名称之后:
<uses-permission android:name="android.permission.INTERNET"/>
将这些添加到 Android Manifest 文件中。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
然后运行:
flutter clean
flutter pub get
flutter run
对于我使用 Firebase 的项目,从 firebase 控制台下载更新的
google-services.json
解决了问题。