【问题标题】:no such method in flutter, the method add was called on null颤振中没有这样的方法,方法 add 是在 null 上调用的
【发布时间】:2020-12-21 09:08:41
【问题描述】:
 FirebaseFirestore.instance
          .collection('women')
          .snapshots()
          .map((snapshot) => snapshot.docs
              .map((document) => CategoryAvatar.fromJson({...document.data()}))
              .toList())
          .listen((avatar) {
        avatarsInfo.addAll(avatar);

当我开始调试时,IDE中出现了如上所示代码第三行的异常:

出现异常。 NoSuchMethodError (NoSuchMethodError: 在 null 上调用了方法 'add'。 接收方:空 尝试调用:add(Instance of 'MethodChannelQuerySnapshot'))

当我调试的时候,调试器总是会因为一些奇怪的原因通过第五行和第六行,我的意思是那些行不能被程序执行。

当我运行代码时,调试控制台上会显示以下文本

D/HwCustConnectivityManagerImpl(8132):isBlockNetworkRequestByNonAis,INVALID_SUBSCRIPTION_ID D/ConnectivityManager(8132):requestNetwork,调用应用是:com.sincerity.sandra W/DynamiteModule(8132):找不到提供程序安装程序的本地模块描述符类。 I/DynamiteModule(8132):考虑本地模块提供程序安装程序:0 和远程模块提供程序安装程序:0 W/ProviderInstaller(8132):无法加载 providerinstaller 模块:找不到可接受的模块。本地版本为 0,远程版本为 0。 D/HwCustConnectivityManagerImpl(8132):isBlockNetworkRequestByNonAis,INVALID_SUBSCRIPTION_ID

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore flutter-dependencies


    【解决方案1】:

    试试这个是否可行,但它只检索一个周期的数据。

      FirebaseFirestore.instance.collection('women').snapshots().map((snapshot) {
          snapshot.documents.forEach((snapshot) {
            print(snapshot.data);
            CategoryAvatar avatar = CategoryAvatar.fromJson(snapshot.data());
            avatarsInfo.addAll(avatar);
          });
        }).toList();
    

    如果您流式传输数据,请尝试此操作

      Stream<List<CategoryAvatar>> avatarList() {
        return FirebaseFirestore.instance.collection('women').
            .snapshots()
            .map((value) => value.documents
                .map((result) => CategoryAvatar.fromJson(result.data()))
                .toList());
      }
    

    希望对你有帮助

    【讨论】:

    • IDE 异常没有出现,它并不总是出现,但是当我尝试建议的答案时,会跳过相同的代码和平,并在调试控制台上显示相同的文本。
    【解决方案2】:

    问题已通过在查询开头添加 await 关键字解决

         await _firebaseFirestore.collection('women').get().then(
            (QuerySnapshot querySnapshot) {
              querySnapshot.docs.forEach(
                (doc) {
                  avatarsInfo.add(
                    CategoryAvatar.fromJson(
                      {
                        ...doc.data(),
                      },
                    ),
                  );
                },
              );
            },
          );
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 2021-01-24
      • 2019-03-31
      • 2021-03-08
      • 2020-04-21
      • 1970-01-01
      • 2021-04-06
      • 2020-10-02
      相关资源
      最近更新 更多