問題描述
flutter pub get 卡住了 (flutter pub get is stucking)
當我在終端運行時 flutter pub get
卡住了,它正在顯示
OS MacOS Catalina 10.15.3
Got TLS error trying to find package launch_review at https://pub.dartlang.org.
pub get failed (server unavailable) ‑‑ attempting retry 1 in 1 second...
Got socket error trying to find package launch_review at https://pub.dartlang.org.
pub get failed (server unavailable) ‑‑ attempting retry 2 in 2 seconds...
Got TLS error trying to find package launch_review at https://pub.dartlang.org.
pub get failed (server unavailable) ‑‑ attempting retry 3 in 4 seconds...
Got socket error trying to find package launch_review at https://pub.dartlang.org.
pub get failed (server unavailable) ‑‑ attempting retry 4 in 8 seconds...
Got socket error trying to find package launch_review at https://pub.dartlang.org.
參考解法
方法 1:
Quick fixes before explanation:
- Restart your router! Works for me several times.
- Make sure your network is not behind a proxy
- Make sure you can ping to pub.dev without any packet loss
- Try to close all of your dart.exe processes before retying to perform the flutter pub get
- Try to delete an existing package from your pubspec.yaml and re‑get it to see if it works
- Try to manually add the package to your project
So, I had (and sometime still having) the same issue. I've analyzed it and came to a conclusion that the package download manager and the server that hosts those packages aren't reliabe at all. Very small packages might just successfully be imported with "flutter pub get", whereas big ones might last forever to download. This is definately a networking issue, on either yours or their side.
Just for verificatioin that we are indeed experiencing the same issue:
open your cmd (no matter t OS) and run: ping ‑t pub.dev .Now, if you see those inconsitent replies from the server, it means there's something wrong with the network (yours or their side). This looks something like this:
- Open up your task manager and look for the latest dart.exe task (it should be invoked the moment you flutter pub get. This task is the package that is being downloaded. If you see the process size never exceeding a certain size, and the get command is still stuck, it only indicates a network issue and the package might never be downloaded successfully. For example, my attempts to get the carousela_flutter 1.4.1 package ended up with a halted process size of around 60mb, looks this this:
If you wait for a relatively large amount of time (10 minutes I would say is enough) and the connectivity issue is still not resolved, you will see the following msg from flutter: "Process finished with exit code 0".
I suggest you try another time or maually add the package.
p.s: it doesn't happen with all of the packages and from my investigation is seems to be related to the size of it. e.g, I managed to get the carousela_flutter 0.7.0 package, but the 1.4.1 failed.
方法 2:
In my case, The host of my ISP was blocked so it could not get the package and it was showing pub get failed (server unavailable) ‑‑ attempting retry 1 in 1 second...
So I turn on my VPN and tried once again and this time it was a success
方法 3:
502 Bad Gateway trying to find package package_name at https://pub.dartlang.org. If you click on the link, you'll find that the website is down. The same is also applied to https://pub.dev/.
方法 4:
I´ve solved it on my Windows machine.
After many tries from answers in many discussions out there, I tried a lot of stuff, like:
Restarting the machine
Deleting the cache folder (the dart‑sdk download may be restarted)
Adding dart‑sdk in the Environment Variable Path
X:\Dev\Flutter\bin\cache\dart‑sdk\
Adding dart‑sdk´s bin folder in the Path variable (for both Environment and User Variables) (desperate action, I know)
X:\Dev\Flutter\bin\cache\dart‑sdk\bin
And still didn´t work.
BUT... I´ve found on this thread something about a proxy problem.
Then I´ve decided to try it out on my Windows machine, and it worked (finally).
Try typing this on Power Shell:
$Env:https_proxy="your.proxy.here:8080"
Then try flutter doctor
again
方法 5:
If its a git error, use this command:
git config ‑‑global url."https://".insteadOf git://
(by Yunus、Magmus、Tanbirul Hashan、Hasan El‑Hefnawy、André Leitão、Prottay)