如何在SliverChildListDelegate中使用FirestoreAnimatedList?

时间:2019-09-21 09:34:44

标签: flutter dart flutter-layout flutter-sliver flutter-packages

我尝试使用SliverList从列表中的后端(Firestore)渲染数据。但是我得到了错误:

  

以下断言被抛出   NotificationListener:错误使用   ParentDataWidget。

     

柔性小部件必须放在Flex小部件内。灵活(无   深度,弯曲度:1,脏)根本没有弯曲祖先。所有权   有问题的Flexible的父项的链为:RepaintBoundary   ←IndexedSemantics←NotificationListener←   KeepAlive←自动保持活动←KeyedSubtree←SliverList←视口   ←IgnorePointer- [GlobalKey#1e502]←语义←⋯

          new CustomScrollView(
                  slivers: <Widget>[              
                    SliverList(
                      delegate: SliverChildListDelegate([
                       new Flexible(
                            child:
                            new FirestoreAnimatedList(
                              query: reference
                                  .orderBy('timestamp', descending: true)
                                  .snapshots(),
                              itemBuilder: (_, DocumentSnapshot snapshot,
                                  Animation<double> animation) {
                                return new Widget(
                                  snapshot: snapshot,
                                  animation: animation,

但是,如果我删除Flexible,则会出现错误:

  

在performResize()期间引发了以下断言:垂直   视口的高度不受限制。

     

视口沿滚动方向扩展以填充其容器。   在这种情况下,垂直视口被无限量地   扩大的垂直空间。这种情况通常会发生   当可滚动小部件嵌套在另一个可滚动小部件内时。   如果此窗口小部件始终嵌套在可滚动窗口小部件中,则不会   需要使用视口,因为始终会有足够的垂直   孩子们的空间。在这种情况下,请考虑改用Column。   否则,请考虑使用“ shrinkWrap”属性(或   ShrinkWrappingViewport)将视口的高度调整为总和   它的孩子的高度。用户创建的祖先   导致错误的小部件是:FirestoreAnimatedList

如果我将FirestoreAnimatedlist替换为Placeholder(),就没有问题:

          new CustomScrollView(
                  slivers: <Widget>[              
                    SliverList(
                      delegate: SliverChildListDelegate([
                        Placeholder(),
        Placeholder(),
        Placeholder(),

我该如何解决?

谢谢大家!

0 个答案:

没有答案