fix typing indicator glitching

This commit is contained in:
otsmr 2026-06-15 22:36:34 +02:00
parent 7dbd190434
commit 878aca0f12

View file

@ -45,6 +45,7 @@ class _TypingIndicatorState extends State<TypingIndicator> {
StreamSubscription<List<(Contact, GroupMember)>>? membersSub; StreamSubscription<List<(Contact, GroupMember)>>? membersSub;
Timer? _periodicUpdate; Timer? _periodicUpdate;
bool _wasShownOnce = false;
@override @override
void initState() { void initState() {
@ -79,23 +80,32 @@ class _TypingIndicatorState extends State<TypingIndicator> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (_groupMembers.isEmpty) return Container(); if (_groupMembers.isEmpty) {
return SizedBox(height: _wasShownOnce ? 19 : 0);
} else {
_wasShownOnce = true;
}
return Align( return SizedBox(
height: 19,
child: Align(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: Padding( child: Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.only(left: 12),
child: Column( child: Row(
mainAxisSize: MainAxisSize.min,
children: _groupMembers children: _groupMembers
.map( .map(
(member) => Padding( (member) => Padding(
key: Key('typing_indicator_${member.contactId}'), key: Key('typing_indicator_${member.contactId}'),
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.only(right: 8),
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
if (!widget.group.isDirectChat) if (!widget.group.isDirectChat)
GestureDetector( Padding(
padding: const EdgeInsets.only(right: 6),
child: GestureDetector(
onTap: () => context.push( onTap: () => context.push(
Routes.profileContact(member.contactId), Routes.profileContact(member.contactId),
), ),
@ -104,8 +114,12 @@ class _TypingIndicatorState extends State<TypingIndicator> {
fontSize: 12, fontSize: 12,
), ),
), ),
),
Container( Container(
padding: const EdgeInsets.all(8), padding: const EdgeInsets.symmetric(
horizontal: 7,
vertical: 6,
),
decoration: BoxDecoration( decoration: BoxDecoration(
color: getMessageColor(true), color: getMessageColor(true),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
@ -114,7 +128,6 @@ class _TypingIndicatorState extends State<TypingIndicator> {
isTyping: isTyping(member), isTyping: isTyping(member),
), ),
), ),
Expanded(child: Container()),
], ],
), ),
), ),
@ -122,6 +135,7 @@ class _TypingIndicatorState extends State<TypingIndicator> {
.toList(), .toList(),
), ),
), ),
),
); );
} }
} }