Merge pull request #517 from GetStream/fix/messageListView

fix!: remove proxy properties from `MessageListView` [CDS-341]
This commit is contained in:
Salvatore Giordano
2021-07-08 09:42:07 +02:00
committed by GitHub
4 changed files with 17 additions and 60 deletions
@@ -142,7 +142,6 @@ class MessageListView extends StatefulWidget {
this.parentMessage, this.parentMessage,
this.threadBuilder, this.threadBuilder,
this.onThreadTap, this.onThreadTap,
this.onReplyTap,
this.dateDividerBuilder, this.dateDividerBuilder,
this.scrollPhysics = const ClampingScrollPhysics(), this.scrollPhysics = const ClampingScrollPhysics(),
this.initialScrollIndex, this.initialScrollIndex,
@@ -152,7 +151,6 @@ class MessageListView extends StatefulWidget {
this.onMessageSwiped, this.onMessageSwiped,
this.highlightInitialMessage = false, this.highlightInitialMessage = false,
this.messageHighlightColor, this.messageHighlightColor,
this.onShowMessage,
this.showConnectionStateTile = false, this.showConnectionStateTile = false,
this.headerBuilder, this.headerBuilder,
this.footerBuilder, this.footerBuilder,
@@ -160,16 +158,11 @@ class MessageListView extends StatefulWidget {
this.emptyBuilder, this.emptyBuilder,
this.systemMessageBuilder, this.systemMessageBuilder,
this.messageListBuilder, this.messageListBuilder,
this.errorWidgetBuilder, this.errorBuilder,
this.messageFilter, this.messageFilter,
this.customAttachmentBuilders,
this.onMessageTap, this.onMessageTap,
this.onSystemMessageTap, this.onSystemMessageTap,
this.onAttachmentTap,
this.onLinkTap,
this.pinPermissions = const [], this.pinPermissions = const [],
this.textBuilder,
this.usernameBuilder,
this.showFloatingDateDivider = true, this.showFloatingDateDivider = true,
this.threadSeparatorBuilder, this.threadSeparatorBuilder,
this.messageListController, this.messageListController,
@@ -222,9 +215,6 @@ class MessageListView extends StatefulWidget {
/// Called when message item gets swiped /// Called when message item gets swiped
final OnMessageSwiped? onMessageSwiped; final OnMessageSwiped? onMessageSwiped;
///
final ReplyTapCallback? onReplyTap;
/// If true the list will highlight the initialMessage if there is any. /// If true the list will highlight the initialMessage if there is any.
/// ///
/// Also See [StreamChannel] /// Also See [StreamChannel]
@@ -233,9 +223,6 @@ class MessageListView extends StatefulWidget {
/// Color used while highlighting initial message /// Color used while highlighting initial message
final Color? messageHighlightColor; final Color? messageHighlightColor;
/// Callback when show message is tapped
final ShowMessageCallback? onShowMessage;
/// Flag for showing tile on header /// Flag for showing tile on header
final bool showConnectionStateTile; final bool showConnectionStateTile;
@@ -262,16 +249,11 @@ class MessageListView extends StatefulWidget {
/// This parameter can be used to display an error message to /// This parameter can be used to display an error message to
/// users in the event /// users in the event
/// of a connection failure. /// of a connection failure.
final ErrorBuilder? errorWidgetBuilder; final ErrorBuilder? errorBuilder;
/// Predicate used to filter messages /// Predicate used to filter messages
final bool Function(Message)? messageFilter; final bool Function(Message)? messageFilter;
/// Attachment builders for the default message widget
/// Please change this in the [MessageWidget] if you are using a
/// custom implementation
final Map<String, AttachmentBuilder>? customAttachmentBuilders;
/// Called when any message is tapped except a system message /// Called when any message is tapped except a system message
/// (use [onSystemMessageTap] instead) /// (use [onSystemMessageTap] instead)
final OnMessageTap? onMessageTap; final OnMessageTap? onMessageTap;
@@ -279,18 +261,6 @@ class MessageListView extends StatefulWidget {
/// Called when system message is tapped /// Called when system message is tapped
final OnMessageTap? onSystemMessageTap; final OnMessageTap? onSystemMessageTap;
/// Customize onTap on attachment
final void Function(Message message, Attachment attachment)? onAttachmentTap;
/// Customize the MessageWidget textBuilder
final Widget Function(BuildContext context, Message message)? textBuilder;
/// Customize the MessageWidget usernameBuilder
final Widget Function(BuildContext context, Message message)? usernameBuilder;
/// Callback for when link is tapped
final void Function(String link)? onLinkTap;
/// A List of user types that have permission to pin messages /// A List of user types that have permission to pin messages
final List<String> pinPermissions; final List<String> pinPermissions;
@@ -376,7 +346,7 @@ class _MessageListViewState extends State<MessageListView> {
(context, list) => _buildListView(list), (context, list) => _buildListView(list),
messageListController: _messageListController, messageListController: _messageListController,
parentMessage: widget.parentMessage, parentMessage: widget.parentMessage,
errorWidgetBuilder: widget.errorWidgetBuilder ?? errorBuilder: widget.errorBuilder ??
(BuildContext context, Object error) => Center( (BuildContext context, Object error) => Center(
child: Text( child: Text(
'Something went wrong', 'Something went wrong',
@@ -823,7 +793,6 @@ class _MessageListViewState extends State<MessageListView> {
showUsername: !isMyMessage, showUsername: !isMyMessage,
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
showSendingIndicator: false, showSendingIndicator: false,
onThreadTap: _onThreadTap,
borderRadiusGeometry: BorderRadius.only( borderRadiusGeometry: BorderRadius.only(
topLeft: const Radius.circular(16), topLeft: const Radius.circular(16),
bottomLeft: bottomLeft:
@@ -841,7 +810,6 @@ class _MessageListViewState extends State<MessageListView> {
messageTheme: isMyMessage messageTheme: isMyMessage
? _streamTheme.ownMessageTheme ? _streamTheme.ownMessageTheme
: _streamTheme.otherMessageTheme, : _streamTheme.otherMessageTheme,
onShowMessage: widget.onShowMessage,
onReturnAction: (action) { onReturnAction: (action) {
switch (action) { switch (action) {
case ReturnActionType.none: case ReturnActionType.none:
@@ -852,16 +820,12 @@ class _MessageListViewState extends State<MessageListView> {
break; break;
} }
}, },
customAttachmentBuilders: widget.customAttachmentBuilders,
onMessageTap: (message) { onMessageTap: (message) {
if (widget.onMessageTap != null) { if (widget.onMessageTap != null) {
widget.onMessageTap!(message); widget.onMessageTap!(message);
} }
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
textBuilder: widget.textBuilder,
usernameBuilder: widget.usernameBuilder,
onLinkTap: widget.onLinkTap,
showPinButton: currentUserMember != null && showPinButton: currentUserMember != null &&
widget.pinPermissions.contains(currentUserMember.role), widget.pinPermissions.contains(currentUserMember.role),
); );
@@ -1004,7 +968,6 @@ class _MessageListViewState extends State<MessageListView> {
showFlagButton: !isMyMessage, showFlagButton: !isMyMessage,
borderSide: borderSide, borderSide: borderSide,
onThreadTap: _onThreadTap, onThreadTap: _onThreadTap,
onReplyTap: widget.onReplyTap,
attachmentBorderRadiusGeometry: BorderRadius.only( attachmentBorderRadiusGeometry: BorderRadius.only(
topLeft: Radius.circular(attachmentBorderRadius), topLeft: Radius.circular(attachmentBorderRadius),
bottomLeft: isMyMessage bottomLeft: isMyMessage
@@ -1055,7 +1018,6 @@ class _MessageListViewState extends State<MessageListView> {
: _streamTheme.otherMessageTheme, : _streamTheme.otherMessageTheme,
readList: readList, readList: readList,
allRead: allRead, allRead: allRead,
onShowMessage: widget.onShowMessage,
onReturnAction: (action) { onReturnAction: (action) {
switch (action) { switch (action) {
case ReturnActionType.none: case ReturnActionType.none:
@@ -1066,17 +1028,12 @@ class _MessageListViewState extends State<MessageListView> {
break; break;
} }
}, },
customAttachmentBuilders: widget.customAttachmentBuilders,
onMessageTap: (message) { onMessageTap: (message) {
if (widget.onMessageTap != null) { if (widget.onMessageTap != null) {
widget.onMessageTap!(message); widget.onMessageTap!(message);
} }
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
}, },
onAttachmentTap: widget.onAttachmentTap,
textBuilder: widget.textBuilder,
usernameBuilder: widget.usernameBuilder,
onLinkTap: widget.onLinkTap,
showPinButton: widget.pinPermissions.contains(currentUserMember.role), showPinButton: widget.pinPermissions.contains(currentUserMember.role),
); );
@@ -269,7 +269,7 @@ class _MessageScreenState extends State<MessageScreen> {
}, },
); );
}, },
errorWidgetBuilder: (BuildContext context, error) { errorBuilder: (BuildContext context, error) {
print(error.toString()); print(error.toString());
return Center( return Center(
child: SizedBox( child: SizedBox(
@@ -40,7 +40,7 @@ import 'package:stream_chat_flutter_core/src/typedef.dart';
/// messageListBuilder: (context, list) { /// messageListBuilder: (context, list) {
/// return MessagesPage(list); /// return MessagesPage(list);
/// }, /// },
/// errorWidgetBuilder: (context, err) { /// errorBuilder: (context, err) {
/// return Center( /// return Center(
/// child: Text('Error'), /// child: Text('Error'),
/// ); /// );
@@ -67,7 +67,7 @@ class MessageListCore extends StatefulWidget {
required this.loadingBuilder, required this.loadingBuilder,
required this.emptyBuilder, required this.emptyBuilder,
required this.messageListBuilder, required this.messageListBuilder,
required this.errorWidgetBuilder, required this.errorBuilder,
this.parentMessage, this.parentMessage,
this.messageListController, this.messageListController,
this.messageFilter, this.messageFilter,
@@ -91,7 +91,7 @@ class MessageListCore extends StatefulWidget {
/// ///
/// This parameter can be used to display an error message to users in the /// This parameter can be used to display an error message to users in the
/// event of a connection failure. /// event of a connection failure.
final ErrorBuilder errorWidgetBuilder; final ErrorBuilder errorBuilder;
/// If the current message belongs to a `thread`, this property represents the /// If the current message belongs to a `thread`, this property represents the
/// first message or the parent of the conversation. /// first message or the parent of the conversation.
@@ -144,7 +144,7 @@ class MessageListCoreState extends State<MessageListCore> {
growable: false, growable: false,
), ),
), ),
errorBuilder: widget.errorWidgetBuilder, errorBuilder: widget.errorBuilder,
loadingBuilder: widget.loadingBuilder, loadingBuilder: widget.loadingBuilder,
builder: (context, data) { builder: (context, data) {
final messageList = data?.reversed.toList(growable: false) ?? []; final messageList = data?.reversed.toList(growable: false) ?? [];
@@ -72,7 +72,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
); );
await tester.pumpWidget(messageListCore); await tester.pumpWidget(messageListCore);
@@ -91,7 +91,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
); );
final mockChannel = MockChannel(); final mockChannel = MockChannel();
@@ -123,7 +123,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
messageListController: controller, messageListController: controller,
); );
@@ -159,7 +159,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
messageListController: controller, messageListController: controller,
); );
@@ -210,7 +210,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage( errorBuilder: (BuildContext context, Object error) => Offstage(
key: errorWidgetKey, key: errorWidgetKey,
), ),
); );
@@ -252,7 +252,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(), messageListBuilder: (_, __) => Offstage(),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(key: emptyWidgetKey), emptyBuilder: (BuildContext context) => Offstage(key: emptyWidgetKey),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
); );
final mockChannel = MockChannel(); final mockChannel = MockChannel();
@@ -292,7 +292,7 @@ void main() {
messageListBuilder: (_, __) => Offstage(key: listWidgetKey), messageListBuilder: (_, __) => Offstage(key: listWidgetKey),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
); );
final mockChannel = MockChannel(); final mockChannel = MockChannel();
@@ -346,7 +346,7 @@ void main() {
), ),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
); );
final mockChannel = MockChannel(); final mockChannel = MockChannel();
@@ -393,7 +393,7 @@ void main() {
), ),
loadingBuilder: (BuildContext context) => Offstage(), loadingBuilder: (BuildContext context) => Offstage(),
emptyBuilder: (BuildContext context) => Offstage(), emptyBuilder: (BuildContext context) => Offstage(),
errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), errorBuilder: (BuildContext context, Object error) => Offstage(),
parentMessage: parentMessage, parentMessage: parentMessage,
); );