【Flutter】flutter doctor network resources 报错,解决国内开发环境问题


flutter doctor network resources 主要检查flutter开发工具运行过程中依赖的网络资源来源站是否可以正常访问,但国内通常都是无法访问的

下面介绍windows下的设置方法,如果你熟练使用mac或linux,通常会更自由,环境变量不会出现不识别的情况,参考本文档依旧可以完成配置

三大资源站分别是

  1. maven.google.com google的maven库资源站
  2. pub.dev dart和flutter的官方开放库资源站
  3. github.com 不用多说

解决maven.google.com 的问题

  1. 首先找到你的flutterSDK的位置(或许可以理解为flutter的安装路径)
  2. 使用支持多编码格式的文档编辑软件打开(例如VSCode):flutterSDK的位置\packages\flutter_tools\lib\src\http_host_validator.dart
  3. 修改内容:maven.google.com 修改为dl.google.com/dl/android/maven2
  4. 保存文档
  5. 删除:flutterSDK的位置\bin目录下的cache文件夹下的全部内容(可直接删除cache)
  6. 重新运行flutter doctor正常情况下既不会出现maven的资源问题

解决pub.dev 的问问题

windows请在图形窗口下设置全局环境变量值,既可解决pub.dev的问题,通常你可以在windows搜索框中搜索环境变量(version>win10),既可出现设置界面,本人建议设置系统环境变量,当然通常用户变量也是生效的

fluter中文社区源
SET FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
SET PUB_HOSTED_URL=https://pub.flutter-io.cn
清华大学源
SET FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter
SET PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub

解决github.com 的问题

首先如果你所在的地区或网络环境可以正常访问github服务的所有端口,那么祝你flutter体验愉快

如果不行,首先考虑使用指定DNS即HOST文件的方式,指向可以正常访问的github.com地址,可以去搜索一些IP138或站长工具网站中的DNS工具解析一下github.com的指向IP,找一些换一下,写入HOST文件,看看有的可以用。。。。但我这里不行所以

只能设置代理,为什么不一开始设置代理解决呢。。。这首先需要看你使用的软件,有的软件天然就解决了一切问题,但我的不行,大多数软件是无法劫持所有软件的http代理的,尤其是控制台

(请你不要再这个帖子下,问一些不应该问的问题,关于代理问题,本人不做任何解答,只解释为什么有的代理没生效)

这里需要生效的是HTTPS_PROXY这个变量,理论上设置代理可以解决所有网络问题

如果你使用的是VSCode你需要打开VSCode的settings.json文件,直接在VSCode界面上方的搜索中搜索settings.json打开就可以了

在json文件尾部最后一个}前加入(你应该需要懂json语法)

,
    "terminal.integrated.env.windows": {
        "http_proxy": "http://127.0.0.1:10001",
        "https_proxy": "http://127.0.0.1:10001",
    }

上方的127.0.0.1:10001只是一个虚构的代理地址,你应该找到你的代理地址,如果你找不到我也没办法,请不要在帖子下方问我

如果你使用的不是VSCode,建议你在Windows视窗界面设置系统环境变量HTTP_PROXY和HTTPS_PROXY,你的HTTPS_PROXY中的格式通常依旧写的是: http://your_address:your_part

windows下对于flutter来说,再控制台设置往往没有生效,至少我是这样,如果你仅想单次生效可以参考第二点中的cmd命令,可以设置临时环境变量,但这对我来说往往没有作用。

另外每次设置完系统环境变量需要完全重启vscode,重开一个控制台是不完美的(我不理解),

最后如果flutter doctor成功识别了你的代理,则会提示你NO_PROXY is not set,如果你没设置NO_PROXY,通常你无需在意这条提示。

好了本文就到这里,如果有问题的话,可以私信我,我再重申一下,请不要在本贴下方讨论一些关于代理的问题!

### Flutter 网络资源配置与常见问题 在网络开发过程中,Flutter 应用程序通常会通过 HTTP 请求与其他服务器通信来获取数据。为了实现这一功能,在 Dart 中可以使用 `http` 包来进行网络请求操作[^1]。 对于 Windows 平台上的 Flutter 开发环境而言,当执行命令 `flutter doctor` 后显示存在关于网络资源的问题时,这可能意味着本地机器无法正常访问某些必要的远程服务或文件。这类情况可能是由于防火墙设置、代理配置不当或是其他网络连接方面的原因所引起的[^2]。 #### 配置网络权限 为了让应用程序能够顺利地发起互联网请求,开发者需要确保应用具有相应的权限声明: - 对于 Android 平台来说,应该在项目的 `AndroidManifest.xml` 文件里加入如下代码片段以申请 Internet 权限: ```xml <uses-permission android:name="android.permission.INTERNET"/> ``` - iOS 则需编辑 `Info.plist` 添加特定键值对允许 App 访问外部网站链接: ```xml <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> ``` 需要注意的是,上述做法仅适用于测试阶段;生产环境中应遵循更严格的安全策略并合理调整 ATS 设置。 #### 使用 http 包发送 GET 和 POST 请求 下面是一个简单的例子展示了如何利用官方推荐的第三方库——`http` 发送同步/异步类型的 HTTP 方法调用: ```dart import 'package:http/http.dart' as http; Future<void> fetchAlbum() async { final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/albums/1')); if (response.statusCode == 200) { // 如果服务器返回 200 OK 响应,则解析 JSON。 } else { throw Exception('Failed to load album'); } } void createAlbum(String title) async { final response = await http.post( Uri.parse('https://jsonplaceholder.typicode.com/albums'), headers: <String, String>{ 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode(<String, String>{'title': title}), ); if (response.statusCode == 201) { // 处理成功创建实体后的逻辑... } else { throw Exception('Failed to create album.'); } } ``` 以上代码段分别实现了向指定 URL 地址发出 GET 及 POST 请求的功能,并处理了响应结果的状态码验证以及异常捕获机制。 #### 解决常见的网络错误提示 如果遇到类似于 “Unable to find packages” 或者下载依赖失败的情况,建议尝试以下几种方法解决: - 清除 pub 缓存:运行命令 `flutter clean && flutter pub cache repair` - 更新 SDK 版本至最新稳定版:`flutter upgrade --force` - 修改镜像源加速包管理器工作流程:在中国大陆地区可考虑切换成国内 CDN 路径如 Tsinghua University Open Source Mirror
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值