有没有办法明确告诉 firebase 动画列表特定小部件的高度应该是多少?就我而言,firebase 列表中的每个项目都有一个基于子级数量的可变大小(它是一个评论线程)。每当一个大线程超出视口(上方)时,它就会被处理并且忘记高度,这会导致在尝试向上滚动时出现烦人的阻塞和失败。
这是我的主题:
new FirebaseAnimatedList(
defaultChild: new DefaultThreadView(),
query: ref.child(postKey),
sort: (a, b) => (a.key.compareTo(b.key)),
itemBuilder: (context, DataSnapshot snapshot,
Animation<double> animation) {
return new FutureBuilder<DataSnapshot>(
future: ref.child(postKey).child(snapshot.key).once(),
builder: (BuildContext context,
AsyncSnapshot<DataSnapshot> snap) {
switch (snap.connectionState) {
case ConnectionState.none:
return new Center(
child: new CircularProgressIndicator());
case ConnectionState.waiting:
return new Center(
child: new CircularProgressIndicator());
default:
if (!snap.hasData) {
return new Text('Error: ${snap.error}');
}
else {
//check if this snap is a root node
String parent = snap.data.value['parent'];
if (parent == this.postKey) {
return new replyTile.ReplyTile(
snap.data, animation, this.postKey, 0);
} else {
return new Container();
}
}
}
}
);
}
)
回复图块是一个小部件,用于显示数据并检查它是否有任何子级,如果有则递归。
每当顶部父级回复图块离开视口时,它都会按预期进行处理,但是当尝试将其带回到视图中时,它会向右滚动到顶部并且看起来非常跳跃,每当更大的线程(具有多个子级)试图出现时,情况就更糟返回视图时它根本不滚动。
我认为如果列表视图知道高度,滚动问题就会消失,但我可能是错的
更糟糕的情况是如何使小部件不暴露并且整个线程从一开始就加载?