Получение данных пользовательского массива из firestore с помощью flutter - PullRequest
0 голосов
/ 26 мая 2020

В моей базе данных firestore у меня есть каталог users, в котором есть данные пользователя как documents. В документе есть два поля: String displayName и Array friends. Я изо всех сил пытаюсь получить массив друзей и поместить его в список в трепетании в потоке. Любая помощь приветствуется.

Мой код в том виде, в котором он сейчас представлен, выглядит следующим образом:

Stream<List<Memo>> get memos {
    var userdocs = Firestore.instance.collection('users').document(userid).document('friends');
    // Complete request and do list conversions 

    // Do more work using results
}

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

1 Ответ

1 голос
/ 26 мая 2020

flutter SDK возвращает объект Stream, который будет выдавать значения с течением времени (база данных в реальном времени). В вашем примере вы назначаете значение Stream и ожидаете List. В асинхронном программировании вы должны подписаться на событие, чтобы всякий раз, когда генерируется значение, мы могли выполнять желаемую операцию.

var userdocs
Firestore.instance
    .collection("users")
    .document(userid)
    .get()
    .then((DocumentSnapshot ds) {
       userdocs = ds.data
     })

Или используйте await, если вы находитесь внутри async функции

var userdocs = await Firestore.instance
    .collection("users")
    .document(userid)
    .get()
...