Mr.Despicable
Mr.Despicable

Reputation: 383

Firestore Error 'controller != null': is not true

I get this error whenever I am trying to query. And this error seems to be appearing random and not always. pubspec.yaml

version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_bloc: ^6.0.2
  bloc: ^6.0.2
  cloud_firestore: ^0.14.0+2
  path_provider: ^1.6.14
  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter doctor-v

[√] Flutter (Channel stable, 1.20.2, on Microsoft Windows [Version 10.0.19041.572], locale en-IN)
    • Flutter version 1.20.2 at C:\src\flutter
    • Framework revision bbfbf1770c (2 months ago), 2020-08-13 08:33:09 -0700
    • Engine revision 9d5b21729f
    • Dart version 2.9.1
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\users\AppData\Local\Android\sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

E/flutter (13433): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: 'package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart': Failed assertion: line 159 pos 12: 'controller != null': is not true.
E/flutter (13433): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
E/flutter (13433): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
E/flutter (13433): #2      MethodChannelFirebaseFirestore._handleError (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:159:12)
E/flutter (13433): #3      MethodChannelFirebaseFirestore._handleQuerySnapshotError (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:84:5)
E/flutter (13433): #4      MethodChannelFirebaseFirestore._handleQuerySnapshotEvent (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:74:7)
E/flutter (13433): #5      new MethodChannelFirebaseFirestore.<anonymous closure> (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:32:18)
E/flutter (13433): #6      MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:432:55)
E/flutter (13433): #7      MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:385:33)
E/flutter (13433): #8      _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:267:33)
E/flutter (13433): #9      _invoke3.<anonymous closure> (dart:ui/hooks.dart:282:15)
E/flutter (13433): #10     _rootRun (dart:async/zone.dart:1190:13)
E/flutter (13433): #11     _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (13433): #12     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (13433): #13     _invoke3 (dart:ui/hooks.dart:281:10)
E/flutter (13433): #14     _dispatchPlatformMessage (dart:ui/hooks.dart:156:5)
E/flutter (13433): 

My query:

Stream<List<PostItem>> searchPosts({String searchTerm, String organisation}) {
    print('function called');
    if (organisation == null) {
      print('running searches');
      return _postsCollection
          .where('description', isGreaterThanOrEqualTo: searchTerm)
          .where('description', isLessThanOrEqualTo: '$searchTerm\uf8ff')
          .snapshots()
          .map(_getPostItem);
    } else {
      print('getting organisation posts');
      return _postsCollection
          .where('organisation', isEqualTo: organisation)
          .snapshots()
          .map(_getPostItem);
    }
  }

Here I am trying to filter posts based on either. _getPostItem just modifies the raw stream. Any help is appreciated. Thanks.

Upvotes: 1

Views: 514

Answers (1)

Akif
Akif

Reputation: 7650

Upgrade the cloud firestore package

cloud_firestore: ^0.14.0+2

to

cloud_firestore: ^0.14.0+3

As an acceptable answer, upgrading the package solved the issue. On Github, there already was the same problem overcame with a similar method.

Upvotes: 3

Related Questions