firebase - 在颤振中使用多提供者和消费者时出错
问题描述
我最近更新了 firebase 依赖项。我不推荐这个,顺便说一句,我的经历很糟糕。谷歌无法弄清楚要遵循哪些命名约定。
在更新并修复了他们造成的所有错误后,我尝试运行我的应用程序并得到了初始化 firebase 错误。好吧,在该错误得到缓解之后,我似乎遇到了一个我无法解决的错误。
这是相关的代码。
Widget build(BuildContext context) {
return StreamProvider<UserTutor>.value(
value: AuthService().user,
child: Consumer<UserTutor>(
builder: (_, user, __) {
return MultiProvider(
providers: [
user == null
? StreamProvider<Tutor>.value(
value: DatabaseService().streamTutor,
)
: StreamProvider<Tutor>.value(
value: DatabaseService(uid: user.uid).streamTutor,
),
user == null
? StreamProvider<List<ClassData>>.value(
value: DatabaseService().classdata)
: StreamProvider<List<ClassData>>.value(
value: DatabaseService(uid: user.uid).classdata),
],
child: MaterialApp(
home: Wrapper(),
debugShowCheckedModeBanner: false,
),
);
},
));
}
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn();
//create user obj based on firebase user
UserTutor _userFromFirebaseUser(User user) {
return user != null ? UserTutor(uid: user.uid, email: user.email) : null;
}
//auth change user stream
Stream<UserTutor> get user {
return _auth
.authStateChanges()
.map((User user) => _userFromFirebaseUser(user));
}
这是我收到的错误。
flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown building Consumer<UserTutor>(dirty, dependencies:
flutter: [_InheritedProviderScope<UserTutor>]):
flutter: a collection path must point to a valid collection.
flutter: 'package:cloud_firestore/src/firestore.dart':
flutter: Failed assertion: line 74 pos 12: 'isValidCollectionPath(collectionPath)'
flutter:
flutter: The relevant error-causing widget was:
flutter: Consumer<UserTutor>
flutter: file:///Users/devintripp/Desktop/flutter_apps.no_sync/discoverytutors/lib/main.dart:25:16
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #2 FirebaseFirestore.collection (package:cloud_firestore/src/firestore.dart:74:12)
flutter: #3 new DatabaseService (package:disc_t/Services/database.dart:19:34)
flutter: #4 MyApp.build.<anonymous closure> (package:disc_t/main.dart:37:32)
flutter: #5 Consumer.buildWithChild (package:provider/src/consumer.dart:175:19)
flutter: #6 SingleChildStatelessWidget.build (package:nested/nested.dart:260:41)
flutter: #7 StatelessElement.build (package:flutter/src/widgets/framework.dart:4620:28)
flutter: #8 SingleChildStatelessElement.build (package:nested/nested.dart:280:18)
flutter: #9 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
flutter: #10 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
flutter: #11 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
flutter: #12 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
flutter: #13 SingleChildWidgetElementMixin.mount (package:nested/nested.dart:223:11)
flutter: #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
flutter: #15 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
flutter: #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
flutter: #17 _InheritedProviderScopeElement.performRebuild (package:provider/src/inherited_provider.dart:426:11)
flutter: #18 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
flutter: #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
flutter: #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
flutter: ... Normal element mounting (7 frames)
flutter: #27 SingleChildWidgetElementMixin.mount (package:nested/nested.dart:223:11)
flutter: ... Normal element mounting (7 frames)
flutter: #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
flutter: #35 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
flutter: #36 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1174:16)
flutter: #37 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1145:5)
flutter: #38 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1087:17)
flutter: #39 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:19)
flutter: #40 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1086:13)
flutter: #41 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:927:7)
flutter: #42 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:908:7)
flutter: (elided 13 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
flutter:
解决方案
推荐阅读
- node.js - 在我的 Ubuntu 1804 上安装 v12.18.2 后如何安装节点 8.10.x
- javascript - 如何在纯 JavaScript IF/ELSE 中重写三元语句
- mysql - 将具有指定日期范围的计算总和从一个表连接到另一个表
- dns - oVirt - FQDN 问题
- google-apps-script - 偶尔例外:无法发送电子邮件:没有收件人(onFormSubmit)
- javascript - 删除行首的字符,但从第 2 行开始
- asp.net - 如何在 ASP.Net Framework 项目中实例化 QueueClient 对象?
- c# - 更新最新 SDK 后 dotnet ef 无法正常工作
- python - 当我从 C++ 调用 python 时无法导入库
- firefox - Firefox 中的“browser.storage.local”在浏览器重启时被清除