show big emoji

This commit is contained in:
Salvatore Giordano
2020-11-03 10:09:30 +01:00
parent c62c65ade5
commit b0897d9cf0
+42 -20
View File
@@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_emoji/flutter_emoji.dart';
import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_portal/flutter_portal.dart';
import 'package:jiffy/jiffy.dart'; import 'package:jiffy/jiffy.dart';
import 'package:stream_chat_flutter/src/message_actions_modal.dart'; import 'package:stream_chat_flutter/src/message_actions_modal.dart';
@@ -717,11 +718,11 @@ class _MessageWidgetState extends State<MessageWidget> {
return SizedBox(); return SizedBox();
} }
Widget _buildTextBubble(BuildContext context) { Widget _wrapTextInBubble({
return GestureDetector( BuildContext context,
onTap: () => retryMessage(context), Widget child,
onLongPress: () => onLongPress(context), }) {
child: Material( return Material(
shape: widget.shape ?? shape: widget.shape ??
RoundedRectangleBorder( RoundedRectangleBorder(
side: widget.borderSide ?? side: widget.borderSide ??
@@ -733,7 +734,16 @@ class _MessageWidgetState extends State<MessageWidget> {
borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero, borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero,
), ),
color: _getBackgroundColor(), color: _getBackgroundColor(),
child: Transform( child: child,
);
}
Widget _buildTextBubble(BuildContext context) {
final emojiParser = EmojiParser();
final isOnlyEmoji =
widget.message.text.characters.every((c) => emojiParser.hasEmoji(c));
Widget child = Transform(
transform: Matrix4.rotationY(widget.reverse ? pi : 0), transform: Matrix4.rotationY(widget.reverse ? pi : 0),
alignment: Alignment.center, alignment: Alignment.center,
child: Padding( child: Padding(
@@ -742,12 +752,35 @@ class _MessageWidgetState extends State<MessageWidget> {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
getFailedMessageWidget(context), getFailedMessageWidget(context),
_buildText(context), widget.textBuilder != null
? widget.textBuilder(context, widget.message)
: MessageText(
onLinkTap: widget.onLinkTap,
message: widget.message,
onMentionTap: widget.onMentionTap,
messageTheme: isOnlyEmoji
? widget.messageTheme.copyWith(
messageText:
widget.messageTheme.messageText.copyWith(
fontSize: 40,
))
: widget.messageTheme,
),
], ],
), ),
), ),
), );
),
if (!isOnlyEmoji) {
child = _wrapTextInBubble(
context: context,
child: child,
);
}
return GestureDetector(
onTap: () => retryMessage(context),
onLongPress: () => onLongPress(context),
child: child,
); );
} }
@@ -781,15 +814,4 @@ class _MessageWidgetState extends State<MessageWidget> {
return; return;
} }
} }
Widget _buildText(BuildContext context) {
return widget.textBuilder != null
? widget.textBuilder(context, widget.message)
: MessageText(
onLinkTap: widget.onLinkTap,
message: widget.message,
onMentionTap: widget.onMentionTap,
messageTheme: widget.messageTheme,
);
}
} }