flutter - Firestore 错误“控制器!= null”:不正确
问题描述
每当我尝试查询时,我都会收到此错误。而且这个错误似乎是随机出现的,并不总是如此。发布规范.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
颤振医生-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):
我的查询:
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);
}
}
在这里,我试图根据任何一个过滤帖子。_getPostItem 只是修改原始流。任何帮助表示赞赏。谢谢。
解决方案
升级 Cloud Firestore 包
cloud_firestore: ^0.14.0+2
至
cloud_firestore: ^0.14.0+3
作为一个可接受的答案,升级包解决了这个问题。在Github上,已经用类似的方法解决了同样的问题。
推荐阅读
- angular - 将角度依赖注入到导出函数中
- linux - SQR:加载共享库时出错:libpdf.so
- linux - rsync 仅从最后一个子目录中的 n 个文件
- android - 错误:在 Android Studio 3.1.4 中无法获取 KotlinTargetPreset 的未知属性“iosX64”?
- angular - 当我们在Angular 6中使用setvalue时如何将id设置为删除按钮
- swift - 获取文档标识符为 XXX 的多个文档
- coq - 如何在 Coq 中定义这种依赖类型的树结构?
- asp.net-web-api - “请求的资源不支持 http 方法 'POST'。- 邮递员
- javascript - 从本地主机上传到实时域时,网站位置检测按钮在移动视图中不起作用
- java - 到处使用 DTO 会影响 jvm 上的内存使用吗?