我正在开发一个 flutter 应用程序,我需要检查互联网连接。但除了三星 s23、Galaxy Z Fold5 之外,它在其他设备上运行良好。我正在检查发布的 apk,并且没有任何实际设备访问权限,因此我可以获得任何调试结果。
在AndroidManifest中,我已经获取了这个权限:
<uses-permission android:name="android.permission.INTERNET" />
这是用于检查互联网连接的代码:
final result = await InternetAddress.lookup('example.com');
try {
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
Get.snackbar('Internet', 'Navigate to Internet');
} else {
Get.snackbar('No Internet', 'Navigate to No Internet');
}
} on SocketException catch (_) {
Get.snackbar('No Internet', 'SocketException');
}
在发布模式下,它始终显示异常中的snackbar。我需要显示“导航到互联网”信息栏。
我可以得到任何解决方案吗?
在使用发布的 APK 时,您似乎在检查 Flutter 应用程序中的互联网连接时遇到了问题,特别是在 Samsung S23 和 Galaxy Z Fold5 设备上。以下是一些可帮助您排除故障并可能解决问题的建议:
网络安全配置:
网络权限:
网络连接检查:
InternetAddress.lookup
方法,尝试使用 Flutter 中的 Connectivity
包来检查网络连接状态。该软件包提供更全面的网络连接检查,可以更有效地处理各种场景。网络配置:
在真实设备上测试:
错误记录:
请注意,如果无法访问真实设备进行调试,可能很难查明问题的确切原因。如果可能,请考虑联系拥有 Samsung S23 和 Galaxy Z Fold5 设备的用户,以收集有关其发布 APK 体验的更多信息。
通过考虑这些建议并可能在真实设备上进行测试,您也许能够确定导致问题的具体因素,并找到解决方案以确保在 Samsung S23 和 Galaxy Z Fold5 设备上进行准确的互联网连接检查。
Dart SDK 中似乎存在问题。没有修复就关闭了。
一个建议是使用 internet_connection_checker_plus 包,它似乎完全符合您想要实现的目标。
要使用它,请将以下内容添加到您的
pubspec.yaml
:
dependencies:
internet_connection_checker_plus: ^2.1.0
并更改您的代码以使用它:
final hasInternet = await InternetConnection().hasInternetAccess;
if (hasInternet) {
Get.snackbar('Internet', 'Navigate to Internet');
} else {
Get.snackbar('No Internet', 'Navigate to No Internet');
}