Я использую приложение случайного чата FirestoreAnimatedList
(FirebaseAnimatedList
для Firestore).
Мне нужно реализовать: Если user1 отправляет много последовательных сообщений, для каждого сообщения не отображается аватар пользователя.Отображать только один раз рядом с последним сообщением.Но если другой пользователь отправит сообщение, то в следующий раз, когда пользователь отправит сообщение, снова отобразится аватар.
Я пытаюсь, но не могу решить!Мой код пока не очень хорош, потому что аватар иногда отображается рядом с неправильным сообщением, а иногда - правильной позицией при перестройке списка.
class MainState extends State<Main> {
…
final Map<int, dynamic> map = {};
body: FirestoreAnimatedList(
query: firestore.collection('messages').snapshots(),
itemBuilder: (
BuildContext context,
DocumentSnapshot snapshot,
Animation<double> animation,
int index,
) {
map[index] = snapshot;
return FadeTransition(
opacity: animation,
child: MessageItem(
index: index,
document: snapshot,
map: map,
),
);
},
class MessageItem extends StatelessWidget {
…
@override
Widget build(BuildContext context) {
return Container(
child: new Row(
children: <Widget>[
new Container(
child:
_sameUser() ?
new Icon(
Icons.account_circle
)
: Container()
bool _sameUser () {
assert(index >= 0);
assert(map != null);
return map[index + 1] != null && map[index + 1]['fromUser'] == map[index]['fromUser'];
}
Из моего теста проблема появляется только для первого и второго последовательных сообщений.Для> 2 последовательных кодов сообщений действуйте как ожидается: рядом с сообщением нет аватара.(Но проблема начинается снова, когда разрывается последовательная цепочка: например, другое user2 отправляет сообщение. Затем проблема начинается снова для последовательного сообщения user1)
Кто-нибудь поможет?Спасибо!