如何使用“gcloud”Flutter从 GoogleCloud Storage 读取数据

问题描述

我试图从 pub dev 的护目镜“gcloud”库中读取数据。但是调用时出错,

  Future<void> read() async {
   
    if (_client == null)
      _client = await auth.clientViaServiceAccount(_credentials,Storage.ScopES);
    
    var storage = Storage(_client,'audio_project');
    var bucket = storage.bucket('audio_bucket');

     var audioList =  await bucket.read("level01/").toList();

    audioList.forEach((element) {
      print("Elements"+element.toString());
    });
    return audioList;
  }

我已使用此代码从云存储中读取文件夹,

gcloud: ^0.7.3
googleapis_auth: ^0.2.12

在我的存储中有一个文件夹,里面有音频文件。这些是我需要阅读的文件

Flutter run --verbose

这些是我的依赖项。

[ +141 ms] E/Flutter ( 9371): [ERROR:Flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'read' was called on null.
[        ] E/Flutter ( 9371): Receiver: null
[        ] E/Flutter ( 9371): Tried calling: read()
[        ] E/Flutter ( 9371): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
[        ] E/Flutter ( 9371): #1      BaseViewState.getAudios (package:OA/screens/base_view.dart:94:30)
[        ] E/Flutter ( 9371): #2      BaseViewState.initState (package:OA/screens/base_view.dart:29:5)
[        ] E/Flutter ( 9371): #3      _LandingPageState.initState (package:OA/screens/dashboard.dart:112:11)
[        ] E/Flutter ( 9371): #4      StatefulElement._firstBuild (package:Flutter/src/widgets/framework.dart:4765:58)
[        ] E/Flutter ( 9371): #5      ComponentElement.mount (package:Flutter/src/widgets/framework.dart:4601:5)
[        ] E/Flutter ( 9371): #6      Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #7      Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #8      SingleChildRenderObjectElement.mount (package:Flutter/src/widgets/framework.dart:6118:14)
[        ] E/Flutter ( 9371): #9      Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #10     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #11     ComponentElement.performRebuild (package:Flutter/src/widgets/framework.dart:4652:16)
[        ] E/Flutter ( 9371): #12     Element.rebuild (package:Flutter/src/widgets/framework.dart:4343:5)
[        ] E/Flutter ( 9371): #13     ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5)
[        ] E/Flutter ( 9371): #14     ComponentElement.mount (package:Flutter/src/widgets/framework.dart:4601:5)
[        ] E/Flutter ( 9371): #15     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #16     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #17     SingleChildRenderObjectElement.mount (package:Flutter/src/widgets/framework.dart:6118:14)
[        ] E/Flutter ( 9371): #18     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #19     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #20     SingleChildRenderObjectElement.mount (package:Flutter/src/widgets/framework.dart:6118:14)
[   +1 ms] E/Flutter ( 9371): #21     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #22     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #23     ComponentElement.performRebuild (package:Flutter/src/widgets/framework.dart:4652:16)
[        ] E/Flutter ( 9371): #24     StatefulElement.performRebuild (package:Flutter/src/widgets/framework.dart:4800:11)
[        ] E/Flutter ( 9371): #25     Element.rebuild (package:Flutter/src/widgets/framework.dart:4343:5)
[        ] E/Flutter ( 9371): #26     ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5)
[        ] E/Flutter ( 9371): #27     StatefulElement._firstBuild (package:Flutter/src/widgets/framework.dart:4791:11)
[        ] E/Flutter ( 9371): #28     ComponentElement.mount (package:Flutter/src/widgets/framework.dart:4601:5)
[   +1 ms] E/Flutter ( 9371): #29     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #30     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #31     SingleChildRenderObjectElement.mount (package:Flutter/src/widgets/framework.dart:6118:14)
[        ] E/Flutter ( 9371): #32     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #33     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #34     SingleChildRenderObjectElement.mount (package:Flutter/src/widgets/framework.dart:6118:14)
[        ] E/Flutter ( 9371): #35     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #36     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[        ] E/Flutter ( 9371): #37     ComponentElement.performRebuild (package:Flutter/src/widgets/framework.dart:4652:16)
[        ] E/Flutter ( 9371): #38     StatefulElement.performRebuild (package:Flutter/src/widgets/framework.dart:4800:11)
[        ] E/Flutter ( 9371): #39     Element.rebuild (package:Flutter/src/widgets/framework.dart:4343:5)
[        ] E/Flutter ( 9371): #40     ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5)
[        ] E/Flutter ( 9371): #41     StatefulElement._firstBuild (package:Flutter/src/widgets/framework.dart:4791:11)
[        ] E/Flutter ( 9371): #42     ComponentElement.mount (package:Flutter/src/widgets/framework.dart:4601:5)
[        ] E/Flutter ( 9371): #43     Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14)
[        ] E/Flutter ( 9371): #44     Element.updateChild (package:Flutter/src/widgets/framework.dart:3327:18)
[   +2 ms] E/Flutter ( 9371): #45     ComponentElement.performRebuild (package:Flutter/src/widgets/framework.d

节目

Solution.java

解决方法

你在详细运行后分享的错误信息说你调用了一个 null 的 'read' 函数,它指的是这一行

bucket.read("level01/").toList();

这意味着您的 bucket 变量是具有空值的变量,这意味着不存在名称为 'audio_bucket' 的存储桶。因此,为了修复它,我建议您查看 GCS 存储桶并确认这是否确实是存储桶的名称,因为我认为这就是您面临的问题发生的地方。