flutter如何获取网络权限
在Flutter项目中,如何正确配置和获取网络权限?我在AndroidManifest.xml中已经添加了<uses-permission android:name="android.permission.INTERNET"/>,但应用仍然无法访问网络。是否需要额外处理iOS的权限?在模拟器和真机测试时权限表现是否不同?求具体实现方法和常见问题排查步骤。
2 回复
在 Flutter 中获取网络权限需要两个步骤:
- Android 配置
在
android/app/src/main/AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- iOS 配置
在
ios/Runner/Info.plist中添加:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
配置完成后,就可以使用 http 或 dio 等包进行网络请求了。记得在 pubspec.yaml 中添加依赖。
注意:iOS 的 ATS 配置在生产环境中需要更严格的设置,建议只允许特定域名。
更多关于flutter如何获取网络权限的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中获取网络权限需要根据平台(Android 和 iOS)分别配置。以下是具体步骤:
Android 配置
-
添加网络权限:
- 打开
android/app/src/main/AndroidManifest.xml文件。 - 在
<manifest>标签内添加以下权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 这允许应用访问互联网并检查网络状态。
- 打开
-
注意事项:
- 从 Android 9 (API 28) 开始,默认禁止明文流量(HTTP)。如需使用 HTTP,需在
AndroidManifest.xml的<application>标签中添加:android:usesCleartextTraffic="true" - 推荐使用 HTTPS 以确保安全。
- 从 Android 9 (API 28) 开始,默认禁止明文流量(HTTP)。如需使用 HTTP,需在
iOS 配置
- 启用网络权限:
- 打开
ios/Runner/Info.plist文件。 - 添加以下键值对以允许 HTTP 请求(如果使用 HTTP):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> - 对于生产环境,建议仅允许特定域名(更安全):
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>yourdomain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
- 打开
代码示例(网络请求)
配置权限后,使用 http 包进行网络请求:
import 'package:http/http.dart' as http;
Future<void> fetchData() async {
try {
final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));
if (response.statusCode == 200) {
print('数据: ${response.body}');
} else {
print('请求失败: ${response.statusCode}');
}
} catch (e) {
print('错误: $e');
}
}
总结
- Android:修改
AndroidManifest.xml添加权限。 - iOS:编辑
Info.plist配置网络安全策略。 - 无需在 Flutter 代码中显式请求权限,但需处理网络异常(如无网络连接)。
完成配置后,应用即可正常进行网络请求。

