show big emoji
This commit is contained in:
+60
-38
@@ -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,37 +718,69 @@ class _MessageWidgetState extends State<MessageWidget> {
|
|||||||
return SizedBox();
|
return SizedBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget _wrapTextInBubble({
|
||||||
|
BuildContext context,
|
||||||
|
Widget child,
|
||||||
|
}) {
|
||||||
|
return Material(
|
||||||
|
shape: widget.shape ??
|
||||||
|
RoundedRectangleBorder(
|
||||||
|
side: widget.borderSide ??
|
||||||
|
BorderSide(
|
||||||
|
color: Theme.of(context).brightness == Brightness.dark
|
||||||
|
? Colors.white.withAlpha(24)
|
||||||
|
: Colors.black.withAlpha(24),
|
||||||
|
),
|
||||||
|
borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero,
|
||||||
|
),
|
||||||
|
color: _getBackgroundColor(),
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Widget _buildTextBubble(BuildContext context) {
|
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),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: Padding(
|
||||||
|
padding: widget.textPadding,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
getFailedMessageWidget(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(
|
return GestureDetector(
|
||||||
onTap: () => retryMessage(context),
|
onTap: () => retryMessage(context),
|
||||||
onLongPress: () => onLongPress(context),
|
onLongPress: () => onLongPress(context),
|
||||||
child: Material(
|
child: child,
|
||||||
shape: widget.shape ??
|
|
||||||
RoundedRectangleBorder(
|
|
||||||
side: widget.borderSide ??
|
|
||||||
BorderSide(
|
|
||||||
color: Theme.of(context).brightness == Brightness.dark
|
|
||||||
? Colors.white.withAlpha(24)
|
|
||||||
: Colors.black.withAlpha(24),
|
|
||||||
),
|
|
||||||
borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero,
|
|
||||||
),
|
|
||||||
color: _getBackgroundColor(),
|
|
||||||
child: Transform(
|
|
||||||
transform: Matrix4.rotationY(widget.reverse ? pi : 0),
|
|
||||||
alignment: Alignment.center,
|
|
||||||
child: Padding(
|
|
||||||
padding: widget.textPadding,
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
|
||||||
children: [
|
|
||||||
getFailedMessageWidget(context),
|
|
||||||
_buildText(context),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user