fix attachmentbuilders on hot reload
This commit is contained in:
+43
-34
@@ -4,9 +4,6 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import 'package:jiffy/jiffy.dart';
|
import 'package:jiffy/jiffy.dart';
|
||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
import 'package:stream_chat_flutter/src/file_attachment.dart';
|
|
||||||
import 'package:stream_chat_flutter/src/giphy_attachment.dart';
|
|
||||||
import 'package:stream_chat_flutter/src/image_attachment.dart';
|
|
||||||
import 'package:stream_chat_flutter/src/message_input.dart';
|
import 'package:stream_chat_flutter/src/message_input.dart';
|
||||||
import 'package:stream_chat_flutter/src/message_list_view.dart';
|
import 'package:stream_chat_flutter/src/message_list_view.dart';
|
||||||
import 'package:stream_chat_flutter/src/reaction_picker.dart';
|
import 'package:stream_chat_flutter/src/reaction_picker.dart';
|
||||||
@@ -20,6 +17,9 @@ import 'package:stream_chat_flutter/src/video_attachment.dart';
|
|||||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
import 'deleted_message.dart';
|
import 'deleted_message.dart';
|
||||||
|
import 'file_attachment.dart';
|
||||||
|
import 'giphy_attachment.dart';
|
||||||
|
import 'image_attachment.dart';
|
||||||
import 'stream_chat.dart';
|
import 'stream_chat.dart';
|
||||||
|
|
||||||
typedef AttachmentBuilder = Widget Function(BuildContext, Message, Attachment);
|
typedef AttachmentBuilder = Widget Function(BuildContext, Message, Attachment);
|
||||||
@@ -80,7 +80,7 @@ class MessageWidget extends StatefulWidget {
|
|||||||
final Map<String, AttachmentBuilder> attachmentBuilders;
|
final Map<String, AttachmentBuilder> attachmentBuilders;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MessageWidgetState createState() => _MessageWidgetState(attachmentBuilders);
|
_MessageWidgetState createState() => _MessageWidgetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MessageWidgetState extends State<MessageWidget>
|
class _MessageWidgetState extends State<MessageWidget>
|
||||||
@@ -99,36 +99,6 @@ class _MessageWidgetState extends State<MessageWidget>
|
|||||||
|
|
||||||
Map<String, AttachmentBuilder> _attachmentBuilders;
|
Map<String, AttachmentBuilder> _attachmentBuilders;
|
||||||
|
|
||||||
_MessageWidgetState(Map<String, AttachmentBuilder> attachmentBuilders) {
|
|
||||||
_attachmentBuilders = {
|
|
||||||
'image': (context, message, attachment) {
|
|
||||||
return ImageAttachment(
|
|
||||||
attachment: attachment,
|
|
||||||
messageTheme: _messageTheme,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
'video': (context, message, attachment) {
|
|
||||||
return VideoAttachment(
|
|
||||||
enableFullScreen: widget.showVideoFullScreen,
|
|
||||||
attachment: attachment,
|
|
||||||
messageTheme: _messageTheme,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
'giphy': (context, message, attachment) {
|
|
||||||
return GiphyAttachment(
|
|
||||||
attachment: attachment,
|
|
||||||
messageTheme: _messageTheme,
|
|
||||||
message: message,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
'file': (context, message, attachment) {
|
|
||||||
return FileAttachment(
|
|
||||||
attachment: attachment,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
}..addAll(attachmentBuilders ?? {});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
super.build(context);
|
super.build(context);
|
||||||
@@ -216,6 +186,45 @@ class _MessageWidgetState extends State<MessageWidget>
|
|||||||
_isNextUser = _nextUserId == _messageUserId;
|
_isNextUser = _nextUserId == _messageUserId;
|
||||||
|
|
||||||
_isMyMessage = _messageUserId == _currentUserId;
|
_isMyMessage = _messageUserId == _currentUserId;
|
||||||
|
|
||||||
|
_mergeAttachmentBuilders();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(MessageWidget oldWidget) {
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
|
||||||
|
_mergeAttachmentBuilders();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _mergeAttachmentBuilders() {
|
||||||
|
_attachmentBuilders = {
|
||||||
|
'image': (context, message, attachment) {
|
||||||
|
return ImageAttachment(
|
||||||
|
attachment: attachment,
|
||||||
|
messageTheme: _messageTheme,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
'video': (context, message, attachment) {
|
||||||
|
return VideoAttachment(
|
||||||
|
enableFullScreen: widget.showVideoFullScreen,
|
||||||
|
attachment: attachment,
|
||||||
|
messageTheme: _messageTheme,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
'giphy': (context, message, attachment) {
|
||||||
|
return GiphyAttachment(
|
||||||
|
attachment: attachment,
|
||||||
|
messageTheme: _messageTheme,
|
||||||
|
message: message,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
'file': (context, message, attachment) {
|
||||||
|
return FileAttachment(
|
||||||
|
attachment: attachment,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
}..addAll(widget.attachmentBuilders ?? {});
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildDeletedMessage(Alignment alignment) {
|
Widget _buildDeletedMessage(Alignment alignment) {
|
||||||
|
|||||||
Reference in New Issue
Block a user