53 lines
1.7 KiB
Dart
53 lines
1.7 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:app/components/util/backend.dart';
|
|
import 'package:app/theme.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'chat.dart';
|
|
|
|
class ChatBubbleWidget extends StatelessWidget{
|
|
late Chat c;
|
|
|
|
ChatBubbleWidget({super.key, required this.c});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
double max_width = MediaQuery.of(context).size.width*0.65;
|
|
|
|
return Row(
|
|
mainAxisAlignment: c.role ? MainAxisAlignment.end : MainAxisAlignment.start,
|
|
children: [
|
|
Container(
|
|
width: max_width,
|
|
padding: const EdgeInsets.all(16.0),
|
|
margin: const EdgeInsets.all(8.0),
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.only(
|
|
topLeft: const Radius.circular(12.0),
|
|
topRight: const Radius.circular(12.0),
|
|
bottomLeft: c.role ? const Radius.circular(12.0) : const Radius
|
|
.circular(0.0),
|
|
bottomRight: c.role ? const Radius.circular(12.0) : const Radius
|
|
.circular(0.0),
|
|
),
|
|
color: c.role ? AppTheme.darkest : AppTheme.dark,
|
|
),
|
|
child:
|
|
// TODO: Properly display filetypes in the thread.
|
|
c.chatType == 0 ? Text(
|
|
c.content,
|
|
style: AppTheme.bodyMedium,
|
|
)
|
|
: c.chatType == 1 ? Image(image: Backend.convertFromBase64(c.content))
|
|
: c.chatType == 2 ? const Icon(
|
|
Icons.file_copy,
|
|
) : const Text("null"),
|
|
// Text(
|
|
// c.content,
|
|
// style: AppTheme.bodyMedium,
|
|
// ),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
} |