我有一个聊天应用程序,我试图通过有条件地隐藏头像和用户标题来折叠后续消息。
我正在使用Firebase_Animated_List,但遇到了这样的情况,我认为不访问列表就无法实现这一目标。而且我也不相信该列表是可访问的。
String lastUid;
return FirebaseAnimatedList(
// reverse: true,
// sort: (a, b) => (b.key).compareTo(a.key),
query: FirebaseDatabase.instance
.reference()
.child('/chats/$pid')
.orderByKey()
.limitToLast(100),
itemBuilder: (_, snap, _animation, index) {
bool isMinimal = false;
String uid = snap.value['uid'];
if (lastUid == uid && lastUid != null) isMinimal = true;
lastUid = uid;
return FadeTransition(
opacity: _animation,
child: ChatItem(pid, snap, isMinimal),
);
},
);
这将正确显示消息,但是列表无法正常运行,因为添加新用户时列表不会停留在底部。 (有没有一种方法可以覆盖它?如果是这样,我就不需要弄乱获取下一个项目了。)
String lastUid;
return FirebaseAnimatedList(
reverse: true,
sort: (a, b) => (b.key).compareTo(a.key),
query: FirebaseDatabase.instance
.reference()
.child('/chats/$pid')
.orderByKey()
.limitToLast(100),
itemBuilder: (_, snap, _animation, index) {
bool isMinimal = false;
String uid = snap.value['uid'];
if (lastUid == uid && lastUid != null) isMinimal = true;
lastUid = uid;
return FadeTransition(
opacity: _animation,
child: ChatItem(pid, snap, isMinimal),
);
},
);
此尝试无法正确呈现聊天,但确实具有正确的滚动行为。如果您位于页面底部,则会显示新的聊天记录。 (是否可以访问FirebaseAnimatedList的实际列表?如果这样,我将能够使用下一项而不是上一项进行isMinimal测试。)
我的另一种想法是找到一种无需使用AxisDirection.up
来指定reverse
的方法,但我不认为我可以这样做。