我正在尝试迭代我的 Firebase 树以填充 FirebaseAnimatedList。我需要使用 key 以及所有提供的值。我假设由于迭代是异步构建到小部件中的,这就是它不像 JSON 迭代那样工作的原因。这是我的代码...
child: new FirebaseAnimatedList(
query: fb.child('NumberOnes').orderByChild('Value'),
padding: new EdgeInsets.all(8.0),
reverse: false,
itemBuilder: (_, DataSnapshot followerSnap,
Animation<double> animation, int Index) {
return new FutureBuilder<DataSnapshot>(
future: fb
.child('NumberOnes')
.orderByChild('Value')
.once(),
builder: (BuildContext context,
AsyncSnapshot<DataSnapshot> userSnap) {
switch (userSnap.connectionState) {
case ConnectionState.none:
return new Text('Loading...');
case ConnectionState.waiting:
return new Text('Awaiting result...');
default:
if (userSnap.hasError)
return new Text('Error: ${userSnap.error}');
else
print(userSnap.data.value.toString());
return new Container(
child: new Text(
userSnap.data.value.toString()),
);
}
});
})
这是 print(userSnap.data.value.toString());
...
{aZb6KxxIuWA: {Value: 1, vidImage: https://i.ytimg.com/vi/aZb6KxxIuWA/mqdefault.jpg, vidId: aZb6KxxIuWA, vidTitle: 10 Embarrassing K-POP Star Fails And Accidents}, 4408NthSJis: {Value: 1, vidImage: https://i.ytimg.com/vi/4408NthSJis/mqdefault.jpg, vidId: 4408NthSJis, vidTitle: [TOP 100] MOST VIEWED K-POP MUSIC VIDEOS • APRIL 2017}, 7n5ieHnu90w: {Value: 1, vidImage: https://i.ytimg.com/vi/7n5ieHnu90w/mqdefault.jpg, vidId: 7n5ieHnu90w, vidTitle: BTS - I NEED U {Color coded lyrics Han|Rom|Eng}}, 8kyG5tTZ1iE: {Value: 1, vidImage: https://i.ytimg.com/vi/8kyG5tTZ1iE/mqdefault.jpg, vidId: 8kyG5tTZ1iE, vidTitle: SHINee 샤이니_Sherlock•셜록 (Clue + Note)_Music Video}, iy94tB5MldE: {Value: 1, vidImage: https://i.ytimg.com/vi/iy94tB5MldE/mqdefault.jpg, vidId: iy94tB5MldE, vidTitle: Simon D (사이먼디) - 짠해 (Cheerz) [MV ENG SUB]}, XuSYtAsMxfY: {Value: 1, vidImage: https://i.ytimg.com/vi/XuSYtAsMxfY/mqdefault.jpg, vidId: XuSYtAsMxfY, vidTitle: YOUTUBERS REACT TO K-Pop #3}, IZ1t7CwfvEc: {Value: 1, vidImage: https://i.ytimg.com/vi/IZ1t7CwfvEc/mqdefault.jpg, vidId: IZ1t7CwfvEc, vidTitle: GOT7 "Never Ever" M/V}, 2ips2mM7Zqw: {Value: 2, vidImage: https://i.ytimg.com/vi/2ips2mM7Zqw/default.jpg, vidId: 2ips2mM7Zqw, vidTitle: BIGBANG - 뱅뱅뱅 (BANG BANG BANG) M/V}, IlJHZJ8EqeA: {Value: 2, vidImage: https://i.ytimg.com/vi/IlJHZJ8EqeA/mqdefault.jpg, vidId: IlJHZJ8EqeA, vidTitle: MINO - '몸(BODY)' M/V}, 0Pinupmqwaw: {Value: 5, vidImage: https://i.ytimg.com/vi/0Pinupmqwaw/default.jpg, vidId: 0Pinupmqwaw, vidTitle: 직 재스퍼 (Zick Jasper) - PRIMETIME (Feat. 지구인)}}
最终计划是将这些信息填充到容器内的卡片
中,而不是文本。
最佳答案
我不确定我是否理解你的问题,我认为你在这里不需要 FutureBuilder
。 FirebaseAnimatedList
已经为您提供了 itemBuilder
的 followerSnap
参数中的数据。
附注一般来说,您应该更喜欢使用 StreamBuilder
和 onValue
,而不是 FutureBuilder
和 once()
,这样您的数据就不会获取陈旧。
关于firebase-realtime-database - 如何迭代 Flutter AsyncSnapshot<DataSnapshot> for FirebaseAnimated List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46618697/