我尝试使用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(),
我该如何解决?
谢谢大家!