source-code/
student-hub
Public
text56 lines1.8 KB
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
class ChatBubble extends StatelessWidget {
final Map<String, String> message;
final bool isUser;
const ChatBubble({
super.key,
required this.message,
required this.isUser,
});
@override
Widget build(BuildContext context) {
return Align(
alignment: isUser ? Alignment.centerRight : Alignment.centerLeft,
child: Container(
margin: const EdgeInsets.only(bottom: 12),
padding: const EdgeInsets.all(12),
constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.85,
),
decoration: BoxDecoration(
color: isUser ? Colors.teal : Colors.grey[200],
borderRadius: BorderRadius.circular(15).copyWith(
bottomRight: isUser ? const Radius.circular(0) : null,
bottomLeft: !isUser ? const Radius.circular(0) : null,
),
),
child: isUser
? Text(
message["text"]!,
style: const TextStyle(color: Colors.white),
)
: MarkdownBody(
data: message["text"]!,
selectable: true,
styleSheet: MarkdownStyleSheet(
p: const TextStyle(color: Colors.black87, fontSize: 15),
code: const TextStyle(
backgroundColor: Colors.black87,
color: Colors.greenAccent,
fontFamily: 'monospace',
),
codeblockDecoration: BoxDecoration(
color: Colors.black87,
borderRadius: BorderRadius.circular(8),
),
),
),
),
);
}
}