Flutter Firestore Stream FirebaseUser на мгновение имеет значение null, используя пакет Provider - PullRequest
0 голосов
/ 05 мая 2020

с приложением flutter Я пытаюсь использовать Stream с пакетом провайдера для потоковой передачи значения из Firestore. Он отлично работает через полсекунды, но выдает исключение, так как user.email вызывается с нулевым значением до тех пор, пока указанный ниже поставщик FirebaseUser не вернет ненулевое значение.

var user = Provider.of<FirebaseUser>(context, listen: false);

Ниже показан поток.

Stream<FirestorePomosDaily> getPomosDaily(context) {
  var user = Provider.of<FirebaseUser>(context, listen: false);
  return firestoreInstance
      .collection('pomos')
      .document(user.email)
      .snapshots()
      .map((doc) {
    return FirestorePomosDaily.fromMap(doc.data);
  });
}

Ниже представлен мульти-провайдер:

void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final FirestoreService _firestoreService = FirestoreService();
    final AuthFunctions _authFunctions = AuthFunctions();
    return MaterialApp(
        home: MultiProvider(providers: [
          StreamProvider<FirebaseUser>.value(value: _authFunctions.firebaseAuth.onAuthStateChanged),
          StreamProvider(
            create: (BuildContext context) => _firestoreService.getPomosDaily(context),
          ),
        ], child: MyBottomNavBar()));
  }
}

FirestorePomosDaily.toMap - это настраиваемый класс, который принимает поля firestore, дайте мне знать, если вы хотите, чтобы я скопировал это. Есть идеи? Надеюсь, выход есть. Я добавил .handleError в конец Stream, но он по-прежнему выдает исключение, просто выдает сообщение об ошибке после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...