为什么Flutter会因为明显存在“丢失的吸气剂”而失败?

时间:2018-10-13 02:49:34

标签: firebase flutter firebase-storage

Flutter抱怨firebase_storage :: StorageUploadTask上缺少吸气剂,但是当我打开声明时,它就在那儿。

/flutter ( 3107): [ERROR:flutter/shell/common/shell.cc(182)] Dart 
Error: Unhandled exception:
E/flutter ( 3107): 'package:flutter_project/widgets/screen.dart': error: line 284 pos 43: lib/widgets/camera_screen.dart:284:43: Error: The getter 'future' isn't defined for the class 'firebase_storage::StorageUploadTask'.
E/flutter ( 3107): Try correcting the name to the name of an existing getter, or defining a getter or field named 'future'.
E/flutter ( 3107):     final downloadUrl = (await uploadTask.future).downloadUrl;
E/flutter ( 3107):                                           ^

Firebase存储代码(您可以看到“获取未来”是课程中的最后一项。):

abstract class StorageUploadTask {
  final FirebaseStorage _firebaseStorage;
  final String _path;
  final StorageMetadata _metadata;

  StorageUploadTask._(this._firebaseStorage, this._path, this._metadata);
  Future<void> _start();

  Completer<UploadTaskSnapshot> _completer =
      new Completer<UploadTaskSnapshot>();
  Future<UploadTaskSnapshot> get future => _completer.future;
}

Flutter Doctor输出:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v0.10.1-pre.39, on Mac OS X 10.14 18A391, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.0)
[✓] Android Studio (version 3.1)
[!] IntelliJ IDEA Community Edition (version 2017.1.5)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.27.2)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.

来自pubspec.yaml的依赖项:

firebase_storage: ^1.0.4

我刚刚更新了Flutter。在更新之前,只有在更新之后,我才没有这个问题。

此外,有时我会在编译过程中收到错误,但有时只有在应用程序在设备上运行之后才会出现错误。

这根本没有道理。

编辑

显然,我在VS Code中使用“转到定义”工具时看到的代码不是正确的代码。我尝试做一些建议的事情(还原为firebase_storage版本1.0.2,使用.onComplete而不是.future),但这些都不起作用。所以我决定放弃一夜。

今天早上,firebase_storage中的代码不同。我不确定VS Code是否存在缓存问题,但这似乎是问题所在。现在我看到.future不存在,但是我可以使用.onComplete。我将代码更改为使用.onComplete,它可以正常工作。

如果我使用的是IntelliJ或Android Studio,也许我不会遇到这个问题。

1 个答案:

答案 0 :(得分:1)

基于@ anmol.majhail的建议,我能够使其正常运行。我恢复为firebase_storage的1.0.2版本,从使用.future更改为.onComplete。

直到最初尝试几个小时后,它才开始工作,因此似乎存在VS Code缓存依赖项的问题,但是我不确定为什么或持续多长时间。