Как получить индивидуальную информацию о пользователе из firestrome с помощью StreamBuilder во флаттере

Я пытаюсь создать приложение, используя Flutter и Firestore. При загрузке одного файла текущего пользователя с помощью StreamBuilder для отображения его в тексте я получаю следующую ошибку

════════ Исключение, перехваченное библиотекой виджетов StateError был выброшен при построении StreamBuilder<DocumentSnapshot<Object?>>(грязный, состояние: _StreamBuilderBaseState<DocumentSnapshot<Object?>, AsyncSnapshot<DocumentSnapshot<Object?>>>#8a26d): Плохое состояние: невозможно получить поле на несуществующей платформе DocumentSnapshot.

Вот мой код

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class Status extends StatefulWidget {
  Status({Key? key}) : super(key: key);
  @override
  State<Status> createState() => _StatusState();
}

class _StatusState extends State<Status> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<DocumentSnapshot>(
        stream: FirebaseFirestore.instance
            .collection("Users")
            .doc(FirebaseAuth.instance.currentUser!.uid)
            .snapshots(),
        builder: (context, AsyncSnapshot snapshot) {
          if (!snapshot.hasData) {
            return Text("Loading");
          } else if (snapshot.hasError) {
            return Text('Something went wrong');
          } else if (snapshot.connectionState == ConnectionState.waiting) {
            return CircularProgressIndicator();
          }
          dynamic data = snapshot.data;
          return new Text(data['status']);
        });
  }
}

добавьте скриншот вашей базы данных

Peter Haddad 23.04.2022 11:46
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно пройти

DocumentSnapshot to AsyncSnapshot.. Try this code

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

 class Status extends StatefulWidget {
   Status({Key? key}) : super(key: key);
  @override
   State<Status> createState() => _StatusState();
 }

 class _StatusState extends State<Status> {

 final Stream<DocumentSnapshot> _usersStream = FirebaseFirestore.instance
  .collection("Users")
  .doc(FirebaseAuth.instance.currentUser.uid)
  .snapshots()

 @override
 Widget build(BuildContext context) {
  return StreamBuilder<DocumentSnapshot>(
     stream: _usersStream,
      builder: (context,  AsyncSnapshot<DocumentSnapshot> snapshot) {
       if (!snapshot.hasData) {
        return Text("Loading");
      } else if (snapshot.hasError) {
        return Text('Something went wrong');
      } else if (snapshot.connectionState == ConnectionState.waiting) {
        return CircularProgressIndicator();
      }
      dynamic data = snapshot.data;
      return new Text(data['status']);
    });
  }
 }

Спасибо за помощь г-н Мурайно

Saqlain Abbas 26.04.2022 20:39

Пожалуйста....

Muraino 27.04.2022 16:49

Другие вопросы по теме