firebase-realtime-database - Flutter firebase 数据库迭代项目
问题描述
我想知道如何从 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;
}
请有人帮助我。
解决方案
对于有同样问题的人,我得到了这个工作:
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 = '';
}
}
}
谢谢大家。
推荐阅读
- php - 将 Mcrypt Rinjdael-128-CBC 函数转换为 php-7.0
- php - Symfony - 如何从实体的数组中删除特定元素
- bash - 将 DML 命令从文本文件发送到 PostgreSQL
- python - 使用 super 从方法传递参数
- javascript - Vue.js:过渡组动画不起作用
- reactjs - 如何将自定义单选组设置为 redux 形式
- c# - AWS 中的 Web 作业,就像在 azure 中一样
- jquery - 如何从 div 内容中删除特定的 div 并将它们发送保存?
- typescript - Nestjs - 选项请求未触发中间件
- javascript - 在 React-Table 单元格中呈现动态数据列表