Document Stream snapshot.hasData возвращает true, но данных нет, как это исправить? - PullRequest
0 голосов
/ 31 января 2019

Я передаю моментальный снимок документа из Firestore, но snapshot.hasData возвращает true, если в базе данных ничего нет.Это приводит к сбою моего кода при попытке извлечь значение из снимка.

Как это исправить?

Я попытался распечатать снимок. Данные только что получили экземпляр Documentsnapshot.Также задумывался о предоставлении начальных данных потоку, но я не знаю, как предоставить пустой тип данных DocumentSnapshot.

Если я вручную вставляю запись в firestore, она работает нормально.

StreamBuilder<DocumentSnapshot>(

          stream: Firestore.instance.collection('UserDetails').document(widget.uid).snapshots(),
          builder: (context, snapshot){

            if(snapshot.hasError){
              widget._err = snapshot.error;
            } else if (snapshot.connectionState == ConnectionState.waiting){
              widget._loadingUserInfo = true;
            } else if (snapshot.hasData){
              nameController.text = snapshot.data['name'];
              ageController.text = snapshot.data['age'];
              introController.text = snapshot.data['intro'];
              widget._loadingUserInfo = false;
            }
)

Я пытаюсь получить пользовательское значение из Firestore, чтобы заполнить их форму, если есть значение или пользователь существует.

Теперь это просто не помогает.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Почему бы вам просто не добавить проверку?

Что-то вроде

if (snapshot.hasData && (snapshot.data == null) return SizedBox();

Также, если вы получаете список, вы можете проверить, если data != null and snapshot.data.length == 0;

0 голосов
/ 31 января 2019

Невозможно для hasData вернуть true при отсутствии данных.

hasData - это всего лишь сокращение для:

snapshot.data != null

Что означает, что вы у есть данные.Но, возможно, не те данные, которые вам нужны.

...