将Flutter Widgets添加到FirebaseAnimatedList

时间:2018-08-18 13:57:25

标签: firebase flutter

因此,我是第一次构建Flutter应用程序,因此我仍然有一种方法可以完全理解该框架,但是我一直陷于这个问题,在其他任何地方都找不到很好的答案。< / p>

在我的布局中,我有一个FirebaseAnimatedList,它可以无限滚动。

我只需要在FirebaseAnimatedList上方添加一个小部件来显示其他数据。

Widget body = new ListView(
  children: <Widget>[
    new Text("Hello!"),
    new FirebaseAnimatedList(//..........)
    ],
);

然后我将该正文小部件添加为新的Scaffold对象的body元素。

但是我收到以下错误:

══╡渲染库引起的异常CA ══════════════════════ I / flutter(25559):在performResize()期间引发了以下断言: I / flutter(25559):垂直视口的高度不受限制。 I / flutter(25559):视口沿滚动方向扩展以填充其容器。在这种情况下,垂直 I / flutter(25559):视口被赋予了无限的垂直空间来扩展。这个情况 I / flutter(25559):通常在将可滚动小部件嵌套在另一个可滚动小部件内时发生。 I / flutter(25559):如果此窗口小部件始终嵌套在可滚动窗口小部件中,则无需使用视口,因为 I / flutter(25559):孩子们总是会有足够的垂直空间。在这种情况下,请考虑使用列 I / flutter(25559):代替。否则,请考虑使用“ shrinkWrap”属性(或ShrinkWrappingViewport)调整大小 I / flutter(25559):视口的高度与其子代高度的总和。

我已经尝试过这些选项,但是我已经能够解决这个问题,如果任何人以前曾遇到过这个问题或知道解决方案,那么任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您要在列表顶部放置静态小部件吗?

您能教一些有关代码的事情吗?

原因: 原因是您在调用FirebaseAnimatedList时正在创建列表,而FirebaseAnimatedList正在生成另一个列表。

Container getContent() {
  return new Container(
    child: new Column(
      children: <Widget>[
         new Text("HELLO"),
         new Flexible(
          child: new FirebaseAnimatedList(
            query: Your database reference,
            itemBuilder: (_, DataSnapshot snapshot, Animation<double> 
            animation, int index) {
               return new Column();
            }
          ),
        )
      ]
    )
  );
}
  

感谢您的回答,但是,在您的解决方案中,我如何使新的Text(“ Hello”)消息与FirebaseanimatedList一起滚动而不是附加在顶部。

Container getContent() {
      return new Container(
        child: new Column(
          children: <Widget>[
             new Flexible(
              child: new FirebaseAnimatedList(
                query: Your database reference,
                itemBuilder: (_, DataSnapshot snapshot, Animation<double> 
                animation, int index) {
                   return new Container(
                      child: new Column(
                        children: <Widget>[
                          new Text("HELLO"),
                        ]
                      )
                   );
                }
              ),
            )
          ]
        )
      );
    }