2

Flutter アプリ内で、画像を Firebase Storage にアップロードし、その後 URL を取得しようとしています。画像がアップロードされており、Web インターフェイスで確認できますが、有効な参照で getDownloadUrl() を呼び出すと (デバッガーで相対パスを確認できます) 、何らかの理由でtype 'NoSuchMethodError' is not a subtype of type 'Exception'内部で実際のエラーが発生しています。 method_channel_reference.dartwherestorageは null でstorage.appあるため、エラーがスローされます。

 @override
  Future<String /*!*/ > getDownloadURL() async {
    try {
      Map<String, dynamic> data = await MethodChannelFirebaseStorage.channel
          .invokeMapMethod<String, dynamic>(
              'Reference#getDownloadURL', <String, dynamic>{
        'appName': storage.app.name,
        'maxOperationRetryTime': storage.maxOperationRetryTime,
        'maxUploadRetryTime': storage.maxUploadRetryTime,
        'maxDownloadRetryTime': storage.maxDownloadRetryTime,
        'bucket': storage.bucket,
        'path': fullPath,
      });

      return data['downloadURL'];
    } catch (e) {
      throw convertPlatformException(e);
    }
  }

アップロードコードは次のとおりです。

final uploadTask = _firebaseStorage.ref().child(storagePath).putFile(recipeImage);

    try {
      await uploadTask.whenComplete(() {});
      final url = await uploadTask.snapshot.ref.getDownloadURL();
      return right<RecipeFailure, String>(url);
    } catch (e) {
      return left<RecipeFailure, String>(RecipeFailure.imageUploadFailed());
    }

私は使用しています

firebase_core: ^0.7.0
firebase_auth: ^0.20.0+1
firebase_storage: ^7.0.0
cloud_firestore: ^0.16.0

依存関係のクリーニング、再構築、およびダウングレードを試みました。この時点で、他にどこを見るべきかわかりません。問題は、ストレージ インスタンスが削除されているか、まったく初期化されていないことにあると思いますが、アップロードが機能するのはなぜですか? どんな助けでも大歓迎です。

4

2 に答える 2