Flutter安装错误,“状态错误:将来已经完成”

时间:2018-12-21 18:19:22

标签: android dart flutter

我正在尝试在Mac上安装Flutter,但出现错误,“错误状态:未来已完成”。以下是“ flutter doctor -v”的输出,我对如何解决此问题有什么想法?

MacBook-Pro:~$ flutter doctor -v
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.1 18B75, locale en-CN)
    • Flutter version 1.0.0 at /Users/tortilla/dev/programs/flutter
    • Framework revision 5391447fae (3 weeks ago), 2018-11-29 19:41:26 -0800
    • Engine revision 7375a0f414
    • Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

⣾Unhandled exception:
Bad state: Future already completed
#0      _AsyncCompleter.complete (dart:async/future_impl.dart:39:31)
#1      _NativeSocket.startConnect.<anonymous closure>.connectNext.<anonymous closure> (dart:io/runtime/binsocket_patch.dart:490:23)
#2      _NativeSocket.issueWriteEvent.issue (dart:io/runtime/binsocket_patch.dart:844:14)
#3      _NativeSocket.issueWriteEvent (dart:io/runtime/binsocket_patch.dart:851:12)
#4      _NativeSocket.multiplex (dart:io/runtime/binsocket_patch.dart:872:11)
#5      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)

3 个答案:

答案 0 :(得分:1)

如本Flutter issue中所述,您可以运行let obj = {key1: 'value1', key2: 'value2'}; let keys = Object.keys(obj); let values = Object.values(obj) console.log(keys, values) let newObj = {}; for( let i = 0; i < keys.length; i++ ){ newObj[keys[i]] = values[i] } console.log(newObj); newObj.key1 = 'asd'; console.log(newObj);禁用对Google Analytics(分析)的请求。完成此操作后,我必须重新启动终端。这样的命令诸如flutter config --no-analytics似乎可以正常工作。

但是,如果您仍然遇到flutter doctorflutter build的问题,这可能是由于此Dart issue中提到的Dart Pub库中的错误所致。问题出在flutter pub get似乎发出了一些网络请求。

在我的Mac上,该问题是由Avast似乎阻止了这些请求触发的。用另一台AV取代Avast并使用Mac内置的防火墙似乎可以解决此问题。 最好是暂时的解决方法,因为更改AV程序是一种极端的解决方案。

答案 1 :(得分:0)

这可能是防火墙问题

如果您在中国,请查看https://flutter.io/community/china

如果您使用的是自签名证书,请参见https://github.com/flutter/flutter/issues/15014

答案 2 :(得分:0)

在我的情况下(中国),仅根据Zöchbauer's answer中的说明使用本地镜像是不够的。

运行flutter doctor时,我不得不打开VPN(我使用Astrill)并切换到StealthVPN模式来解决此问题。

请参阅this github issue,然后跳转到ScholarChild的评论。