diff --git a/example/lib/main.dart b/example/lib/main.dart index 0bc75cea..69099c73 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -425,6 +425,7 @@ class _ChannelListPageState extends State { direction: SortOption.ASC, ), ], + pullToRefresh: false, paginationParams: PaginationParams(limit: 20), emptyBuilder: (_, query) { return LayoutBuilder( diff --git a/lib/src/message_search_bloc.dart b/lib/src/message_search_bloc.dart index 735c1439..67b6455d 100644 --- a/lib/src/message_search_bloc.dart +++ b/lib/src/message_search_bloc.dart @@ -60,7 +60,6 @@ class MessageSearchBlocState extends State String query, PaginationParams pagination, }) async { - if (messageResponses?.isNotEmpty == true) return; _messageResponses.add(null); try { final messages = await _search( diff --git a/lib/src/message_search_list_view.dart b/lib/src/message_search_list_view.dart index 33d6eb68..73a98a2d 100644 --- a/lib/src/message_search_list_view.dart +++ b/lib/src/message_search_list_view.dart @@ -62,6 +62,7 @@ class MessageSearchListView extends StatefulWidget { this.itemBuilder, this.onItemTap, this.showResultCount = true, + this.pullToRefresh = true, }) : super(key: key); /// Message String to search on @@ -107,6 +108,9 @@ class MessageSearchListView extends StatefulWidget { /// Set it to false to hide total results text final bool showResultCount; + /// Set it to false to disable the pull-to-refresh widget + final bool pullToRefresh; + @override _MessageSearchListViewState createState() => _MessageSearchListViewState(); } @@ -281,7 +285,35 @@ class _MessageSearchListViewState extends State { ); } - Widget child; + Widget child = ListView.separated( + physics: AlwaysScrollableScrollPhysics(), + itemCount: items.isNotEmpty ? items.length + 1 : items.length, + separatorBuilder: (_, index) { + if (widget.separatorBuilder != null) { + return widget.separatorBuilder(context, index); + } + return _separatorBuilder(context, index); + }, + itemBuilder: (context, index) { + if (index < items.length) { + return _listItemBuilder(context, items[index]); + } + return _buildQueryProgressIndicator(context, messageSearchBloc); + }, + ); + if (widget.pullToRefresh) { + child = RefreshIndicator( + onRefresh: () async => messageSearchBloc.search( + filter: widget.filters, + sort: widget.sortOptions, + query: widget.messageQuery, + pagination: widget.paginationParams, + messageFilter: widget.messageFilters, + ), + child: child, + ); + } + child = LazyLoadScrollView( onEndOfPage: () => messageSearchBloc.loadMore( filter: widget.filters, @@ -292,22 +324,7 @@ class _MessageSearchListViewState extends State { query: widget.messageQuery, messageFilter: widget.messageFilters, ), - child: ListView.separated( - physics: AlwaysScrollableScrollPhysics(), - itemCount: items.isNotEmpty ? items.length + 1 : items.length, - separatorBuilder: (_, index) { - if (widget.separatorBuilder != null) { - return widget.separatorBuilder(context, index); - } - return _separatorBuilder(context, index); - }, - itemBuilder: (context, index) { - if (index < items.length) { - return _listItemBuilder(context, items[index]); - } - return _buildQueryProgressIndicator(context, messageSearchBloc); - }, - ), + child: child, ); if (widget.showResultCount) {