import 'dart:io'; import 'package:intl/intl.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.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 = DateFormat.yMd(Platform.localeName).add_jm().format(widget.messageDate.toLocal()); return Center( widthFactor: 1.0, child: Row( mainAxisSize: MainAxisSize.min, children: [ Text(prettyDate, style: TextStyle(fontSize: 9.0, 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)))) ], )); } }