update sending indicator

This commit is contained in:
Salvatore Giordano
2020-06-16 17:22:26 +02:00
parent 3c779b6e34
commit 5b5c390c82
5 changed files with 24 additions and 51 deletions
+1
View File
@@ -90,6 +90,7 @@ class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MaterialApp( return MaterialApp(
// debugShowMaterialGrid: true,
theme: ThemeData.light(), theme: ThemeData.light(),
darkTheme: ThemeData.dark(), darkTheme: ThemeData.dark(),
themeMode: ThemeMode.system, themeMode: ThemeMode.system,
+3 -1
View File
@@ -463,7 +463,9 @@ class _MessageListViewState extends State<MessageListView> {
topRight: Radius.circular(16), topRight: Radius.circular(16),
bottomRight: Radius.circular(16), bottomRight: Radius.circular(16),
), ),
showUserAvatar: isNextUser ? DisplayWidget.hide : DisplayWidget.show, showUserAvatar: isMyMessage
? DisplayWidget.gone
: (isNextUser ? DisplayWidget.hide : DisplayWidget.show),
messageTheme: isMyMessage messageTheme: isMyMessage
? StreamChatTheme.of(context).ownMessageTheme ? StreamChatTheme.of(context).ownMessageTheme
: StreamChatTheme.of(context).otherMessageTheme, : StreamChatTheme.of(context).otherMessageTheme,
+10 -25
View File
@@ -201,8 +201,8 @@ class _MessageWidgetState extends State<MessageWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var leftPadding = widget.showUserAvatar != DisplayWidget.gone var leftPadding = widget.showUserAvatar != DisplayWidget.gone
? widget.messageTheme.avatarTheme.constraints.maxWidth + 23.0 ? widget.messageTheme.avatarTheme.constraints.maxWidth + 16.0
: 12.0; : 6.0;
if (widget.showSendingIndicator == DisplayWidget.gone) { if (widget.showSendingIndicator == DisplayWidget.gone) {
leftPadding -= 7; leftPadding -= 7;
} }
@@ -232,17 +232,6 @@ class _MessageWidgetState extends State<MessageWidget> {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
if (widget.showSendingIndicator ==
DisplayWidget.show)
_buildSendingIndicator(),
SizedBox(
width: 2,
),
if (widget.showSendingIndicator ==
DisplayWidget.hide)
SizedBox(
width: 8,
),
if (widget.showUserAvatar == DisplayWidget.show) if (widget.showUserAvatar == DisplayWidget.show)
_buildUserAvatar(), _buildUserAvatar(),
SizedBox( SizedBox(
@@ -389,12 +378,14 @@ class _MessageWidgetState extends State<MessageWidget> {
if (widget.message.createdAt != null && widget.showTimestamp) if (widget.message.createdAt != null && widget.showTimestamp)
TextSpan( TextSpan(
text: Jiffy(widget.message.createdAt.toLocal()) text: Jiffy(widget.message.createdAt.toLocal())
.format(' HH:mm'), .format(' HH:mm'),
), ),
], ],
), ),
), ),
), ),
if (widget.showSendingIndicator == DisplayWidget.show)
_buildSendingIndicator(),
if (widget.readList?.isNotEmpty == true) if (widget.readList?.isNotEmpty == true)
SizedBox.fromSize( SizedBox.fromSize(
size: Size((widget.readList.length * 10.0) + 10, 17), size: Size((widget.readList.length * 10.0) + 10, 17),
@@ -623,17 +614,11 @@ class _MessageWidgetState extends State<MessageWidget> {
} }
Widget _buildSendingIndicator() { Widget _buildSendingIndicator() {
return Transform.translate( return Transform(
offset: Offset( transform: Matrix4.rotationY(widget.reverse ? pi : 0),
0, alignment: Alignment.center,
4, child: SendingIndicator(
), message: widget.message,
child: Transform(
transform: Matrix4.rotationY(widget.reverse ? pi : 0),
alignment: Alignment.center,
child: SendingIndicator(
message: widget.message,
),
), ),
); );
} }
+9 -24
View File
@@ -13,39 +13,24 @@ class SendingIndicator extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (message.status == MessageSendingStatus.SENT || message.status == null) { if (message.status == MessageSendingStatus.SENT || message.status == null) {
return CircleAvatar( return Icon(
radius: 4, Icons.done,
backgroundColor: StreamChatTheme.of(context).accentColor, size: 8,
child: Icon(
Icons.done,
color: Colors.white,
size: 4,
),
); );
} }
if (message.status == MessageSendingStatus.SENDING || if (message.status == MessageSendingStatus.SENDING ||
message.status == MessageSendingStatus.UPDATING) { message.status == MessageSendingStatus.UPDATING) {
return CircleAvatar( return Icon(
radius: 4, Icons.access_time,
backgroundColor: Colors.grey, size: 8,
child: Icon(
Icons.access_time,
size: 4,
color: Colors.white,
),
); );
} }
if (message.status == MessageSendingStatus.FAILED || if (message.status == MessageSendingStatus.FAILED ||
message.status == MessageSendingStatus.FAILED_UPDATE || message.status == MessageSendingStatus.FAILED_UPDATE ||
message.status == MessageSendingStatus.FAILED_DELETE) { message.status == MessageSendingStatus.FAILED_DELETE) {
return CircleAvatar( return Icon(
radius: 4, Icons.error_outline,
backgroundColor: Color(0xffd0021B).withOpacity(.1), size: 8,
child: Icon(
Icons.error_outline,
size: 4,
color: Colors.white,
),
); );
} }
+1 -1
View File
@@ -287,7 +287,7 @@ class StreamChatThemeData {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 12, fontSize: 12,
), ),
messageBackgroundColor: Color(0x33ebebeb), messageBackgroundColor: Color(0xffE6E6E6),
avatarTheme: AvatarTheme( avatarTheme: AvatarTheme(
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
constraints: BoxConstraints.tightFor( constraints: BoxConstraints.tightFor(