From 3976ac7f4f3e23dc65ae27537faf5c0b184a453f Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 5 May 2021 16:03:00 +0530 Subject: [PATCH] lint changes message --- .../lib/src/message_search_item.dart | 12 +- .../lib/src/message_search_list_view.dart | 142 +++++++++--------- .../lib/src/message_text.dart | 14 +- 3 files changed, 88 insertions(+), 80 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_search_item.dart b/packages/stream_chat_flutter/lib/src/message_search_item.dart index 7be8893b..dc276cb3 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_item.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_item.dart @@ -5,9 +5,11 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// It shows the current [Message] preview. /// -/// Usually you don't use this widget as it's the default item used by [MessageSearchListView]. +/// Usually you don't use this widget as it's the default item used by +/// [MessageSearchListView]. /// -/// The widget renders the ui based on the first ancestor of type [StreamChatTheme]. +/// The widget renders the ui based on the first ancestor of type +/// [StreamChatTheme]. /// Modify it to change the widget appearance. class MessageSearchItem extends StatelessWidget { /// Instantiate a new MessageSearchItem @@ -38,7 +40,7 @@ class MessageSearchItem extends StatelessWidget { leading: UserAvatar( user: user, showOnlineStatus: showOnlineStatus, - constraints: BoxConstraints.tightFor( + constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), @@ -69,7 +71,7 @@ class MessageSearchItem extends StatelessWidget { subtitle: Row( children: [ Expanded(child: _buildSubtitle(context, message)), - SizedBox(width: 16), + const SizedBox(width: 16), _buildDate(context, message), ], ), @@ -149,7 +151,7 @@ class MessageSearchItem extends StatelessWidget { TextStyle? mentionsTextStyle) { final textList = text.split(' '); final resList = []; - for (var e in textList) { + for (final e in textList) { if (mentions.isNotEmpty && mentions.any((element) => '@${element.name}' == e)) { resList.add(TextSpan( diff --git a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart index b88af62e..1d9ef272 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart @@ -2,8 +2,7 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/info_tile.dart'; import 'package:stream_chat_flutter/src/message_search_item.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; - -import '../stream_chat_flutter.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Callback called when tapping on a user typedef MessageSearchItemTapCallback = void Function(GetMessageResponse); @@ -43,10 +42,12 @@ typedef EmptyMessageSearchBuilder = Widget Function( /// ``` /// /// -/// Make sure to have a [MessageSearchBloc] ancestor in order to provide the information about the messages. +/// Make sure to have a [MessageSearchBloc] ancestor in order to provide the +/// information about the messages. /// The widget uses a [ListView.separated] to render the list of messages. /// -/// The widget components render the ui based on the first ancestor of type [StreamChatTheme]. +/// The widget components render the ui based on the first ancestor of type +/// [StreamChatTheme]. /// Modify it to change the widget appearance. class MessageSearchListView extends StatefulWidget { /// Instantiate a new MessageSearchListView @@ -78,8 +79,10 @@ class MessageSearchListView extends StatefulWidget { final Filter filters; /// The sorting used for the channels matching the filters. - /// Sorting is based on field and direction, multiple sorting options can be provided. - /// You can sort based on last_updated, last_message_at, updated_at, created_at or member_count. + /// Sorting is based on field and direction, multiple sorting options + /// can be provided. + /// You can sort based on last_updated, last_message_at, updated_at, + /// created_at or member_count. /// Direction can be ascending or descending. final List? sortOptions; @@ -109,6 +112,7 @@ class MessageSearchListView extends StatefulWidget { /// Set it to false to disable the pull-to-refresh widget final bool pullToRefresh; + /// Show error tile on top final bool showErrorTile; /// The builder that is used when the search messages are fetched @@ -132,73 +136,63 @@ class _MessageSearchListViewState extends State { MessageSearchListController(); @override - Widget build(BuildContext context) { - return MessageSearchListCore( - filters: widget.filters, - sortOptions: widget.sortOptions, - messageQuery: widget.messageQuery, - paginationParams: widget.paginationParams, - messageFilters: widget.messageFilters, - messageSearchListController: _messageSearchListController, - emptyBuilder: widget.emptyBuilder ?? - (context) { - return LayoutBuilder( - builder: (context, viewportConstraints) { - return SingleChildScrollView( - physics: AlwaysScrollableScrollPhysics(), - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: viewportConstraints.maxHeight, - ), - child: Center( - child: Text('There are no messages currently'), + Widget build(BuildContext context) => MessageSearchListCore( + filters: widget.filters, + sortOptions: widget.sortOptions, + messageQuery: widget.messageQuery, + paginationParams: widget.paginationParams, + messageFilters: widget.messageFilters, + messageSearchListController: _messageSearchListController, + emptyBuilder: widget.emptyBuilder ?? + (context) => LayoutBuilder( + builder: (context, viewportConstraints) => + SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: viewportConstraints.maxHeight, + ), + child: const Center( + child: Text('There are no messages currently'), + ), ), ), - ); - }, - ); - }, - errorBuilder: widget.errorBuilder ?? - (BuildContext context, dynamic error) { - if (error is Error) { - print(error.stackTrace); - } - return InfoTile( - showMessage: widget.showErrorTile, - tileAnchor: Alignment.topCenter, - childAnchor: Alignment.topCenter, - message: 'An error occurred.', - child: Container(), - ); - }, - loadingBuilder: widget.loadingBuilder ?? - (context) { - return LayoutBuilder( - builder: (context, viewportConstraints) { - return SingleChildScrollView( - physics: AlwaysScrollableScrollPhysics(), - child: ConstrainedBox( - constraints: BoxConstraints( - minHeight: viewportConstraints.maxHeight, - ), - child: Center( - child: CircularProgressIndicator(), + ), + errorBuilder: widget.errorBuilder ?? + (BuildContext context, dynamic error) { + if (error is Error) { + print(error.stackTrace); + } + return InfoTile( + showMessage: widget.showErrorTile, + tileAnchor: Alignment.topCenter, + childAnchor: Alignment.topCenter, + message: 'An error occurred.', + child: Container(), + ); + }, + loadingBuilder: widget.loadingBuilder ?? + (context) => LayoutBuilder( + builder: (context, viewportConstraints) => + SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: viewportConstraints.maxHeight, + ), + child: const Center( + child: CircularProgressIndicator(), + ), ), ), - ); - }, - ); - }, - childBuilder: widget.childBuilder ?? _buildListView, - ); - } + ), + childBuilder: widget.childBuilder ?? _buildListView, + ); - Widget _separatorBuilder(BuildContext context, int index) { - return Container( - height: 1, - color: StreamChatTheme.of(context).colorTheme.greyWhisper, - ); - } + Widget _separatorBuilder(BuildContext context, int index) => Container( + height: 1, + color: StreamChatTheme.of(context).colorTheme.greyWhisper, + ); Widget _listItemBuilder( BuildContext context, GetMessageResponse getMessageResponse) { @@ -224,8 +218,8 @@ class _MessageSearchListViewState extends State { .colorTheme .accentRed .withOpacity(.2), - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 16), + child: const Padding( + padding: EdgeInsets.symmetric(vertical: 16), child: Center( child: Text('Error loading messages'), ), @@ -234,9 +228,11 @@ class _MessageSearchListViewState extends State { } return Container( height: 100, - padding: EdgeInsets.all(32), + padding: const EdgeInsets.all(32), child: Center( - child: snapshot.data! ? CircularProgressIndicator() : Container(), + child: snapshot.data! + ? const CircularProgressIndicator() + : Container(), ), ); }); @@ -246,7 +242,7 @@ class _MessageSearchListViewState extends State { final items = data; Widget child = ListView.separated( - physics: AlwaysScrollableScrollPhysics(), + physics: const AlwaysScrollableScrollPhysics(), itemCount: items.isNotEmpty ? items.length + 1 : items.length, separatorBuilder: (_, index) { if (widget.separatorBuilder != null) { diff --git a/packages/stream_chat_flutter/lib/src/message_text.dart b/packages/stream_chat_flutter/lib/src/message_text.dart index b0099eff..8c95120d 100644 --- a/packages/stream_chat_flutter/lib/src/message_text.dart +++ b/packages/stream_chat_flutter/lib/src/message_text.dart @@ -2,11 +2,13 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'stream_chat_theme.dart'; -import 'utils.dart'; +import '../stream_chat_flutter.dart'; +/// Text widget to display in message class MessageText extends StatelessWidget { + /// Constructor for creating a [MessageText] widget const MessageText({ Key? key, required this.message, @@ -15,9 +17,16 @@ class MessageText extends StatelessWidget { this.onLinkTap, }) : super(key: key); + /// Message whose text is to be displayed final Message message; + + /// Callback for when mention is tapped final void Function(User)? onMentionTap; + + /// Callback for when link is tapped final void Function(String)? onLinkTap; + + /// [MessageTheme] whose text theme is to be applied final MessageTheme messageTheme; @override @@ -71,6 +80,7 @@ class MessageText extends StatelessWidget { String _replaceMentions(String text) { message.mentionedUsers.map((u) => u.name).toSet().forEach((userName) { + // ignore: parameter_assignments text = text.replaceAll( '@$userName', '[@$userName](@${userName.replaceAll(' ', '')})'); });