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;
Timer? _periodicUpdate;
bool _wasShownOnce = false;
@override
void initState() {
@ -79,23 +80,32 @@ class _TypingIndicatorState extends State<TypingIndicator> {
@override
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,
child: Padding(
padding: const EdgeInsets.all(12),
child: Column(
padding: const EdgeInsets.only(left: 12),
child: Row(
mainAxisSize: MainAxisSize.min,
children: _groupMembers
.map(
(member) => Padding(
key: Key('typing_indicator_${member.contactId}'),
padding: const EdgeInsets.symmetric(vertical: 8),
padding: const EdgeInsets.only(right: 8),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
if (!widget.group.isDirectChat)
GestureDetector(
Padding(
padding: const EdgeInsets.only(right: 6),
child: GestureDetector(
onTap: () => context.push(
Routes.profileContact(member.contactId),
),
@ -104,8 +114,12 @@ class _TypingIndicatorState extends State<TypingIndicator> {
fontSize: 12,
),
),
),
Container(
padding: const EdgeInsets.all(8),
padding: const EdgeInsets.symmetric(
horizontal: 7,
vertical: 6,
),
decoration: BoxDecoration(
color: getMessageColor(true),
borderRadius: BorderRadius.circular(12),
@ -114,7 +128,6 @@ class _TypingIndicatorState extends State<TypingIndicator> {
isTyping: isTyping(member),
),
),
Expanded(child: Container()),
],
),
),
@ -122,6 +135,7 @@ class _TypingIndicatorState extends State<TypingIndicator> {
.toList(),
),
),
),
);
}
}