You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemm-flutter-app/lib/ui/chat/chat_bubble.dart

89 lines
2.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
class ChatBubble extends StatelessWidget {
const ChatBubble(
{Key? key,
required this.text,
required this.isCurrentUser,
required this.isSeen,
required this.isDelivered,
required this.dateTime})
: super(key: key);
final String text;
final bool isCurrentUser;
final bool isSeen;
final bool isDelivered;
final String dateTime;
@override
Widget build(BuildContext context) {
return Padding(
// asymmetric padding
padding: EdgeInsets.fromLTRB(
isCurrentUser ? 64.0 : 16.0,
4,
isCurrentUser ? 16.0 : 64.0,
4,
),
child: Align(
// align the child within the container
alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft,
child: DecoratedBox(
// chat bubble decoration
decoration: BoxDecoration(
color: Colors.white,
gradient: isCurrentUser
? null
: LinearGradient(
transform: GradientRotation(.46),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: [
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
]),
borderRadius: BorderRadius.circular(10),
),
child: Padding(
padding: const EdgeInsets.all(12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
text.toText12(
color:
isCurrentUser ? MyColors.grey57Color : MyColors.white),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: [
dateTime.toText12(
color: isCurrentUser
? MyColors.grey41Color.withOpacity(.5)
: Colors.white.withOpacity(0.7)),
if (isCurrentUser) 5.width,
if (isCurrentUser)
Icon(
isDelivered
? Icons.done_all
: Icons.done_all,
color: isSeen
? MyColors.textMixColor
: MyColors.grey9DColor,
size: 14,
)
],
),
],
),
),
),
),
);
}
}