firebase-realtime-database - 如何迭代 Flutter AsyncSnapshot<DataSnapshot> for FirebaseAnimated List?

标签 firebase-realtime-database iteration snapshot flutter

我正在尝试迭代我的 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. 지구인)}}

最终计划是将这些信息填充到容器内的卡片中,而不是文本。

我没有收到错误,但这是“容器”和文本的屏幕截图。 enter image description here

最佳答案

我不确定我是否理解你的问题,我认为你在这里不需要 FutureBuilderFirebaseAnimatedList 已经为您提供了 itemBuilderfollowerSnap 参数中的数据。

附注一般来说,您应该更喜欢使用 StreamBuilderonValue,而不是 FutureBuilderonce(),这样您的数据就不会获取陈旧。

关于firebase-realtime-database - 如何迭代 Flutter AsyncSnapshot<DataSnapshot> for FirebaseAnimated List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46618697/

相关文章:

java - 如何等待方法直到从 Firebase 数据库接收到数据?

javascript - 为什么我的快照返回 null,即使 Firebase 数据库上有值

Swift 将数据写入 Firebase 错误预期声明

java - Struts 1 - Iteration in Iteration - 内排法

C:制作通用迭代函数?

jestjs - 如何在测试中查看 Jest 快照

javascript - 如何获取 firebase.database.Reference 完整路径

python - 迭代算法到递归的转换

firebase - 如何显示 map 中的数据列表? - flutter 的Firestore

java - 如何在 Android Studio 中添加 Snap to Roads Google Map