Фильтр места флаттера на основе переменной в запросе пожарного депо - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю над приложением, которое запрашивает определенные элементы из моего пожарного хранилища на основе зарегистрированного идентификатора пользователя.

Теперь я пытаюсь создать средство оповещения, связанное с этим, но каким-то образом оно ломается при установке фильтра в запрос firestore

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:tutora/states/question_notifier.dart';
import 'package:tutora/models/answers.dart';
import 'package:firebase_auth/firebase_auth.dart';

Future<String> id() async {
  FirebaseUser user = await FirebaseAuth.instance.currentUser();
  String userID = user.uid.toString();
  return userID;
}

getAnswers(AnswerNotifier answerNotifier) async {
  QuerySnapshot snapshot = await Firestore.instance
      .collection('Questions')
      .where(
        'UserID',
        isEqualTo: await id(),
      )
      .getDocuments();

  List<Answer> _answerList = [];

  snapshot.documents.forEach((document) {
    Answer answer = Answer.fromMap(document.data);
    _answerList.add(answer);
  });
  answerNotifier.answerList = _answerList;
}

Что в моей голове это должно сделать, так это то, что он получает текущий идентификатор пользователя, а затем на основании этого собирает только те вопросы, которые совпадают в столбце UserID.

This работает отлично, если я вручную ввожу идентификатор пользователя в своем коде, однако в тот момент, когда он запрашивает текущий идентификатор пользователя у id (), он не находит подходящих вопросов. Таким образом, мой список вопросов в приложении пуст, как и c мой _answerList здесь.

Пользователь вошел в систему в этот момент в приложении, где вызывается этот модуль ответа.

Благодарен для любой помощи это действительно беспокоит меня, теперь бросьте некоторое время.

1 Ответ

1 голос
/ 04 апреля 2020

Попробуйте выполнить следующее:

getAnswers(AnswerNotifier answerNotifier) async {
  String userId = await id();
  QuerySnapshot snapshot = await Firestore.instance
      .collection('Questions')
      .where('UserID',isEqualTo: userId).getDocuments();

сначала получите userId, а затем используйте результат в запросе where().

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