Firebase 在颤振中使用多供应器和耗电元件时出错
我最近更新了firebase依赖项。我不推荐这样做,顺便说一句,我的经历很糟糕。谷歌不知道应该遵循什么命名约定 在更新和修复了所有由它们引起的错误后,我尝试运行我的应用程序,并得到了初始化firebase错误。在那个错误得到缓解之后,我似乎遇到了一个我无法解决的错误 这是相关代码Firebase 在颤振中使用多供应器和耗电元件时出错,firebase,flutter,google-cloud-firestore,google-authentication,flutter-provider,Firebase,Flutter,Google Cloud Firestore,Google Authentication,Flutter Provider,我最近更新了firebase依赖项。我不推荐这样做,顺便说一句,我的经历很糟糕。谷歌不知道应该遵循什么命名约定 在更新和修复了所有由它们引起的错误后,我尝试运行我的应用程序,并得到了初始化firebase错误。在那个错误得到缓解之后,我似乎遇到了一个我无法解决的错误 这是相关代码 Widget build(BuildContext context) { return StreamProvider<UserTutor>.value( value: AuthSer
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));
}
小部件构建(构建上下文){
返回StreamProvider.value(
值:AuthService()。用户,
儿童:消费者(
生成器:(uu,用户,uu){
回程多供应商(
供应商:[
用户==null
?StreamProvider.value(
值:DatabaseService().streamTutor,
)
:StreamProvider.value(
值:DatabaseService(uid:user.uid).streamTutor,
),
用户==null
?StreamProvider.value(
值:DatabaseService().classdata)
:StreamProvider.value(
值:DatabaseService(uid:user.uid).classdata),
],
孩子:MaterialApp(
主:Wrapper(),
debugShowCheckedModeBanner:false,
),
);
},
));
}
final FirebaseAuth _auth=FirebaseAuth.instance;
最终谷歌签名谷歌签名=谷歌签名();
//基于firebase用户创建用户obj
UserTutor\u userFromFirebaseUser(用户){
返回用户!=null?UserTutor(uid:user.uid,email:user.email):null;
}
//身份验证更改用户流
流获取用户{
返回_auth
.authStateChanges()
.map((用户)=>\u userFromFirebaseUser(用户));
}
这是我收到的错误
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:
颤振:══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════
颤振:在构建使用者时抛出了以下断言(脏的,依赖项:
颤振:[[u InheritedProviderScope]):
颤振:集合路径必须指向有效集合。
flatter:'package:cloud\u firestore/src/firestore.dart':
颤振:失败的断言:第74行位置12:“isValidCollectionPath(collectionPath)”
颤振:
颤振:导致错误的相关小部件是:
颤振:消费者
颤振:file:///Users/devintripp/Desktop/flutter_apps.no_sync/discoverytutors/lib/main.dart:25:16
颤振:
颤振:抛出异常时,这是堆栈:
flatter:#2 FirebaseFirestore.collection(包:cloud_firestore/src/firestore.dart:74:12)
flatter:#3新数据库服务(包:disc#t/Services/database.dart:19:34)
颤振:#4 MyApp.build。(包装:圆盘/主。省道:37:32)
颤振:#5 Consumer.buildWithChild(包:provider/src/Consumer.dart:175:19)
flatter:#6 SingleChildStatelessWidget.build(包:嵌套/嵌套.dart:260:41)
flatter:#7无状态元素.build(包:flatter/src/widgets/framework.dart:4620:28)
颤振:#8 SingleChildStatelement.build(包:嵌套/嵌套。dart:280:18)
flatter:#9 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4546:15)
flatter:#10 Element.rebuild(包:flatter/src/widgets/framework.dart:4262:5)
flatter:#11 ComponentElement._firstBuild(包:flatter/src/widgets/framework.dart:4525:5)
flatter:#12 ComponentElement.mount(包:flatter/src/widgets/framework.dart:4520:5)
颤振:#13 SingleChildWidgetElementMixin.mount(包:嵌套/嵌套。dart:223:11)
flatter:#14 Element.inflateWidget(包:flatter/src/widgets/framework.dart:3490:14)
flatter:#15 Element.updateChild(包:flatter/src/widgets/framework.dart:3258:18)
flatter:#16 ComponentElement.performRebuild(包:flatter/src/widgets/framework.dart:4571:16)
颤振:#17_InheritedProviderScopeElement.performRebuild(包:provider/src/inherited_provider.dart:426:11)
flatter:#18 Element.rebuild(包:flatter/src/widgets/framework.dart:4262:5)
flatter:#19 ComponentElement._firstBuild(包:flatter/src/widgets/framework.dart:4525:5)
flatter:#20 ComponentElement.mount(包:flatter/src/widgets/framework.dart:4520:5)
颤振:。。。正常元件安装(7个机架)
颤振:#27 SingleChildWidgetElementMixin.mount(包:嵌套/嵌套。dart:223:11)
颤振:。。。正常元件安装(7个机架)
flatter:#34 Element.inflateWidget(包:flatter/src/widgets/framework.dart:3490:14)
flatter:#35 Element.updateChild(包:flatter/src/widgets/framework.dart:3258:18)
flatter:#36 RenderObjectToWidgetElement._重建(包:flatter/src/widgets/binding.dart:1174:16)
flatter:#37 RenderObjectToWidgetElement.mount(包:flatter/src/widgets/binding.dart:1145:5)
颤振:#38 RenderObjectToWidgetAdapter.attachToRenderTree。(软件包:flatter/src/widgets/binding.dart:1087:17)
flatter:#39 BuildOwner.buildScope(包:flatter/src/widgets/framework.dart:2620:19)
flatter:#40 RenderObjectToWidgetAdapter.attachToRenderTree(包:flatter/src/widgets/binding.dart:1086:13)
flatter:#41 WidgetsBinding.attachRootWidget(包:flatter/src/widgets/binding.dart:927:7)
颤振:#42 widgetsbind.scheduleAttachRootWidget。(包:flatter/src/widgets/binding.dart:908:7)
颤振:(从类断言错误、类RawReceivePortImpl、类计时器、dart:async和dart:async补丁中删除了13帧)
颤振:
stacktrace显示错误来自DatabaseService,这些流是否调用firestore集合?如果是,你确定他们说的对吗?我发现了问题所在。一个你不能再使用消费者智慧的东西