不支持的操作:_Namespace 在 flutter web 上使用 Image Picker 上传图片 Firebase Cloud Storage

Hen*_*our 5 firebase flutter google-cloud-firestore flutter-dependencies flutter-web

我正在尝试将图像上传到移动应用程序上的 firebase 云存储,它可以工作,但在网络上它会出现这样的错误........................ ...................................................... ...................................................... ......................................

 Error: Unsupported operation: _Namespace
    at Object.throw_ [as throw] (http://localhost:52964/dart_sdk.js:5067:11)
    at Function.get _namespacePointer [as _namespacePointer] (http://localhost:52964/dart_sdk.js:56707:17)
    at Function._namespacePointer (http://localhost:52964/dart_sdk.js:54523:28)
    at Function._dispatchWithNamespace (http://localhost:52964/dart_sdk.js:54526:31)
    at io._File.new.open (http://localhost:52964/dart_sdk.js:54641:23)
    at io._File.new.readAsBytes (http://localhost:52964/dart_sdk.js:54787:19)
at firebase_storage$.FireBaseStorageMethods.new.uploadImage (http://localhost:52964/packages/flutterfire/utils/firebase_storage.dart.lib.js:51:48)
    at uploadImage.next (<anonymous>)
    at runBody (http://localhost:52964/dart_sdk.js:40590:34)
    at Object._async [as async] (http://localhost:52964/dart_sdk.js:40621:7)
at firebase_storage$.FireBaseStorageMethods.new.uploadImage (http://localhost:52964/packages/flutterfire/utils/firebase_storage.dart.lib.js:42:20)
at http://localhost:52964/packages/flutterfire/views/product/add_product.dart.lib.js:235:71
at ink_well._InkResponseState.new.[_handleTap] (http://localhost:52964/packages/flutter/src/material/icon_button.dart.lib.js:40468:31)
at tap.TapGestureRecognizer.new.invokeCallback (http://localhost:52964/packages/flutter/src/gestures/recognizer.dart.lib.js:190:18)
at tap.TapGestureRecognizer.new.handleTapUp (http://localhost:52964/packages/flutter/src/gestures/tap.dart.lib.js:409:40)
at tap.TapGestureRecognizer.new.[_checkUp] (http://localhost:52964/packages/flutter/src/gestures/tap.dart.lib.js:217:12)
at tap.TapGestureRecognizer.new.handlePrimaryPointer (http://localhost:52964/packages/flutter/src/gestures/tap.dart.lib.js:166:23)
at tap.TapGestureRecognizer.new.handleEvent (http://localhost:52964/packages/flutter/src/gestures/recognizer.dart.lib.js:426:16)
at pointer_router.PointerRouter.new.[_dispatch] (http://localhost:52964/packages/flutter/src/gestures/pointer_router.dart.lib.js:86:9)
at http://localhost:52964/packages/flutter/src/gestures/pointer_router.dart.lib.js:112:26
    at LinkedMap.new.forEach (http://localhost:52964/dart_sdk.js:27679:11)
at pointer_router.PointerRouter.new.[_dispatchEventToRoutes] (http://localhost:52964/packages/flutter/src/gestures/pointer_router.dart.lib.js:110:29)
at pointer_router.PointerRouter.new.route (http://localhost:52964/packages/flutter/src/gestures/pointer_router.dart.lib.js:105:37)
at binding$5.WidgetsFlutterBinding.new.handleEvent (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:364:26)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:352:24)
at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:52964/packages/flutter/src/rendering/layer.dart.lib.js:5427:13)
at binding$5.WidgetsFlutterBinding.new.[_handlePointerEventImmediately] (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:328:14)
at binding$5.WidgetsFlutterBinding.new.handlePointerEvent (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:302:43)
at binding$5.WidgetsFlutterBinding.new.[_flushPointerEventQueue] (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:292:14)
at binding$5.WidgetsFlutterBinding.new.[_handlePointerDataPacket] (http://localhost:52964/packages/flutter/src/gestures/binding.dart.lib.js:283:54)
    at Object.invoke1 (http://localhost:52964/dart_sdk.js:190405:7)
    at _engine.EnginePlatformDispatcher.__.invokeOnPointerDataPacket (http://localhost:52964/dart_sdk.js:171081:15)
    at _engine.PointerBinding.__.[_onPointerData] (http://localhost:52964/dart_sdk.js:171963:49)
    at http://localhost:52964/dart_sdk.js:172401:28
    at http://localhost:52964/dart_sdk.js:172357:16
    at loggedHandler (http://localhost:52964/dart_sdk.js:172062:11)
Run Code Online (Sandbox Code Playgroud)

这是我的做法:

Future<List<ProductImageModel>> uploadImage(
      {String? destination = 'files',
      required List<ProductImageModel> images,
      required BuildContext context}) async {
    UploadTask? task;
    List<ProductImageModel> _imageDocs = [];
    for (var image in images) {
      final _destination = '$destination/product - ${DateTime.now()}';
      final ref = fireBaseStorage.ref(_destination);

      File _filePath = File(image.filePathFromDevice);

      if (kIsWeb) {
        task = ref.putData(await _filePath.readAsBytes());
      } else {
        task = ref.putFile(_filePath);
      }
      //waiting images upload to firebase until completed
      final taskSnapShot = await task
          .catchError((error) => Alert.show(
              des: error.toString(), type: Type.error, context: context))
          .whenComplete(() => {});
      _imageDocs.add(ProductImageModel(
          fileName: taskSnapShot.ref.name,
          filePathFromDevice: image.filePathFromDevice,
          filePath: await taskSnapShot.ref.getDownloadURL()));
    }

    return _imageDocs;
  }
Run Code Online (Sandbox Code Playgroud)