База данных Flutter Firebase перебирает элементы - PullRequest
0 голосов
/ 02 июня 2018

Я хотел бы знать, как получить список объектов из пути во Flutter, вот как я получаю один объект и работает нормально:

static Future<Year> getYear(
  String yearKey) async {
Completer<Year> completer = new Completer<Year>();

FirebaseDatabase.instance
    .reference()
    .child("year")
    .child(yearKey)
    .once()
    .then((DataSnapshot snapshot) {

  var year = new Year.fromJson(snapshot.key, snapshot.value);

  completer.complete(year);
});

return completer.future;
}

Теперь я пытаюсь сделать так, чтобы получитьсписок всех лет на том же пути, но не знаю, как перебирать элементы:

static Future<List<Year>> getYears() async {
    Completer<List<Year>> completer = new Completer<List<Year>>();

    List<Year> years = new List<Year>();

    FirebaseDatabase.instance
        .reference()
        .child("year")
        .once()
        .then((DataSnapshot snapshot) {

        //how to iterate over the items here?

      completer.complete(years);
    });

    return completer.future;
  }

Кто-то мне помогает, пожалуйста.

1 Ответ

0 голосов
/ 20 декабря 2018

У меня это работает, для кого-то, у кого такая же проблема:

static Future<List<Year>> getYears() async {
    Completer<List<Year>> completer = new Completer<List<Year>>();

    List<Year> years = new List<Year>();

    FirebaseDatabase.instance
        .reference()
        .child("year")
        .once()
        .then((DataSnapshot snapshot) {
          //here i iterate and create the list of objects
          Map<dynamic, dynamic> yearMap = snapshot.value;
          yearMap.forEach((key, value) {
            years.add(Year.fromJson(key, value));
          });

      completer.complete(years);
    });

    return completer.future;
  }

Вот код года:

class Year{
  String key;
  String name;

  Year({this.name});

  Year.fromJson(this.key, Map data){
    name = data['name'];
    if(name == null){
      name = '';
    }
  }
}

Спасибо всем.

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