import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../models/redaction.dart'; import '../settings.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // Provides message decorations (acks/errors/dates etc.) for generic message bubble overlays (chats, invites etc.) class MessageBubbleDecoration extends StatefulWidget { MessageBubbleDecoration({required this.ackd, required this.errored, required this.messageDate, required this.fromMe}); final DateTime messageDate; final bool fromMe; final bool ackd; final bool errored; @override _MessageBubbleDecoration createState() => _MessageBubbleDecoration(); } class _MessageBubbleDecoration extends State { @override Widget build(BuildContext context) { var prettyDate = prettyDateString(context, widget.messageDate.toLocal()); return FittedBox( child: Row( mainAxisSize: MainAxisSize.min, children: [ Text(prettyDate, overflow: TextOverflow.ellipsis, textWidthBasis: TextWidthBasis.longestLine, style: TextStyle( fontSize: 9.0 * Provider.of(context).fontScaling, fontWeight: FontWeight.w200, fontFamily: "Inter", color: widget.fromMe ? Provider.of(context).theme.messageFromMeTextColor : Provider.of(context).theme.messageFromOtherTextColor), textAlign: widget.fromMe ? TextAlign.right : TextAlign.left), !widget.fromMe ? SizedBox(width: 1, height: 1) : Padding( padding: EdgeInsets.all(1.0), child: widget.ackd == true ? Tooltip( message: AppLocalizations.of(context)!.acknowledgedLabel, child: Icon(Icons.check_circle_outline, color: Provider.of(context).theme.messageFromMeTextColor, size: 16)) : (widget.errored == true ? Tooltip( message: AppLocalizations.of(context)!.couldNotSendMsgError, child: Icon(Icons.error_outline, color: Provider.of(context).theme.messageFromMeTextColor, size: 16)) : Tooltip( message: AppLocalizations.of(context)!.pendingLabel, child: Icon(Icons.hourglass_bottom_outlined, color: Provider.of(context).theme.messageFromMeTextColor, size: 16)))) ], )); } }