Improve repo structure (#22)
* app updated * readme updated * rename base folder * update chatty's readme * move apps to packages dir * update repo overview Co-authored-by: diegoveloper <[email protected]>
This commit is contained in:
co-authored by
diegoveloper
parent
bd6bb66279
commit
030c3eb428
@@ -0,0 +1,148 @@
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:imessage/cutom_painter.dart';
|
||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
|
||||
show Message, AttachmentUploadStateBuilder;
|
||||
|
||||
class MessageWidget extends StatelessWidget {
|
||||
final Alignment alignment;
|
||||
final Message message;
|
||||
final Color color;
|
||||
final Color messageColor;
|
||||
|
||||
const MessageWidget(
|
||||
{Key key,
|
||||
@required this.alignment,
|
||||
@required this.message,
|
||||
@required this.color,
|
||||
@required this.messageColor})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (message.attachments?.isNotEmpty == true &&
|
||||
message.attachments.first.type == 'image') {
|
||||
return MessageImage(
|
||||
color: color, message: message, messageColor: messageColor);
|
||||
} else {
|
||||
return MessageText(
|
||||
alignment: alignment,
|
||||
color: color,
|
||||
message: message,
|
||||
messageColor: messageColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MessageImage extends StatelessWidget {
|
||||
const MessageImage({
|
||||
Key key,
|
||||
@required this.color,
|
||||
@required this.message,
|
||||
@required this.messageColor,
|
||||
}) : super(key: key);
|
||||
|
||||
final Color color;
|
||||
final Message message;
|
||||
final Color messageColor;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (message.text != null) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
child: Container(
|
||||
color: color,
|
||||
child: Column(
|
||||
children: [
|
||||
if (message.attachments.first.file != null)
|
||||
Image.memory(
|
||||
message.attachments.first.file.bytes,
|
||||
fit: BoxFit.cover,
|
||||
)
|
||||
else
|
||||
CachedNetworkImage(
|
||||
imageUrl: message.attachments.first.thumbUrl ??
|
||||
message.attachments.first.imageUrl ??
|
||||
message.attachments.first.assetUrl,
|
||||
),
|
||||
if (message.attachments.first?.title != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(message.attachments.first.title,
|
||||
style: TextStyle(color: messageColor)),
|
||||
),
|
||||
message.attachments.first.pretext != null
|
||||
? Text(message.attachments.first.pretext)
|
||||
: Container()
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return ClipRRect(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
child: Container(
|
||||
color: color,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: message.attachments.first.thumbUrl,
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MessageText extends StatelessWidget {
|
||||
const MessageText({
|
||||
Key key,
|
||||
@required this.alignment,
|
||||
@required this.color,
|
||||
@required this.message,
|
||||
@required this.messageColor,
|
||||
}) : super(key: key);
|
||||
|
||||
final Alignment alignment;
|
||||
final Color color;
|
||||
final Message message;
|
||||
final Color messageColor;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Align(
|
||||
alignment:
|
||||
alignment, //Change this to Alignment.topRight or Alignment.topLeft
|
||||
child: CustomPaint(
|
||||
painter: ChatBubble(color: color, alignment: alignment),
|
||||
child: Container(
|
||||
margin: const EdgeInsets.fromLTRB(16.0, 8.0, 16.0, 8.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Container(
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * 0.65),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Text(
|
||||
message.text,
|
||||
style: TextStyle(color: messageColor),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user