首页 > 解决方案 > 在颤振中使用多提供者和消费者时出错

问题描述

我最近更新了 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:

标签: firebasefluttergoogle-cloud-firestoregoogle-authenticationflutter-provider

解决方案


推荐阅读