【问题标题】:Flutter firebase database iterate over itemsFlutter firebase 数据库迭代项目
【发布时间】:2018-11-12 02:27:24
【问题描述】:

我想知道如何从 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;
  }

请有人帮助我。

【问题讨论】:

  • 这取决于你的数据库是结构化的
  • 您已经在使用 .then((DataSnapshot snapshot) { //这就是您正在迭代的区域完成每个项目 completer.complete(years); });
  • 没有 vinoth,缺少将项目添加到列表中,我不知道如何从快照中获取项目并放入列表中。

标签: firebase-realtime-database dart flutter


【解决方案1】:

我得到了这个工作,对于有同样问题的人:

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 = '';
    }
  }
}

谢谢大家。

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多