首页 > 解决方案 > Flutter Web 问题:在 Firebase 存储上上传

问题描述

我正在尝试使用我的 Flutter Web App 上传图片,但我得到的是以下错误:

TypeError: dart.global.firebase.storage is not a function
    at Object.storage$ [as storage] (http://localhost:64863/packages/firebase/src/top_level.dart.lib.js:90:100)
    at product_card._ProductCardState.new._newProduct (http://localhost:64863/packages/delivery/admin_pages/product_card.dart.lib.js:2576:38)
    at _newProduct.next (<anonymous>)
    at http://localhost:64863/dart_sdk.js:37956:33
    at _RootZone.runUnary (http://localhost:64863/dart_sdk.js:37810:58)
    at _FutureListener.thenAwait.handleValue (http://localhost:64863/dart_sdk.js:32771:29)
    at handleValueCallback (http://localhost:64863/dart_sdk.js:33319:49)
    at Function._propagateToListeners (http://localhost:64863/dart_sdk.js:33357:17)
    at _Future.new.[_completeWithValue] (http://localhost:64863/dart_sdk.js:33199:23)
    at async._AsyncCallbackEntry.new.callback (http://localhost:64863/dart_sdk.js:33222:35)
    at Object._microtaskLoop (http://localhost:64863/dart_sdk.js:38071:13)
    at _startMicrotaskLoop (http://localhost:64863/dart_sdk.js:38077:13)
    at http://localhost:64863/dart_sdk.js:33574:9

在 index.html 中,我在正文中有以下几行:

  <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-analytics.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js"></script>
  <script src="main.dart.js" type="application/javascript"></script>

我已经尝试过 gstatic.com/firebasejs 的其他版本,但似乎没有任何效果。

颤振医生:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, 1.24.0-10.2.pre, on Mac OS X 10.15.6 19G73 darwin-x64, locale it-IT)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] Connected device (2 available)

颤振升级:

Flutter is already up to date on channel beta
Flutter 1.24.0-10.2.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision 022b333a08 (4 weeks ago) • 2020-11-18 11:35:09 -0800
Engine • revision 07c1eed46b
Tools • Dart 2.12.0 (build 2.12.0-29.10.beta)

存储规则:

rules_version = ‘2’; 
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth!=null;
    }
  }
}

我在使用 Cloud Firestore 功能时没有问题,但是当我尝试使用时:

import 'package:firebase/firebase.dart' as fb;
...
fb.storage()...

我得到了我上面写的错误。

有谁知道这个的解决方案?

标签: android-studioflutterdartfile-uploadflutter-web

解决方案


推荐阅读