diff --git a/lib/src/user_list_view.dart b/lib/src/user_list_view.dart index 63285d8b..046ad9c7 100644 --- a/lib/src/user_list_view.dart +++ b/lib/src/user_list_view.dart @@ -328,56 +328,37 @@ class _UserListViewState extends State } if (_isListView) { - return ListView.custom( + return ListView.separated( physics: AlwaysScrollableScrollPhysics(), controller: _scrollController, - childrenDelegate: SliverChildBuilderDelegate( - (context, i) { - return _listItemBuilder(context, i, items); - }, - childCount: (items.length * 2) + 1, - findChildIndexCallback: (key) { - final ValueKey valueKey = key; - final index = - items.indexWhere((item) => item.key == valueKey.value); - return index != -1 ? (index * 2) : null; - }, - ), + 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) { + return _listItemBuilder(context, index, items); + }, ); } - return GridView.custom( + return GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: widget.crossAxisCount, ), + itemCount: items.isNotEmpty ? items.length + 1 : items.length, physics: AlwaysScrollableScrollPhysics(), controller: _scrollController, - childrenDelegate: SliverChildBuilderDelegate( - (context, i) { - return _gridItemBuilder(context, i, items); - }, - childCount: items.length, - findChildIndexCallback: (key) { - final ValueKey valueKey = key; - final index = - items.indexWhere((item) => item.key == valueKey.value); - return index != -1 ? index : null; - }, - ), + itemBuilder: (context, index) { + return _gridItemBuilder(context, index, items); + }, ); }, ); } Widget _listItemBuilder(BuildContext context, int i, List items) { - if (i % 2 != 0) { - if (widget.separatorBuilder != null) { - return widget.separatorBuilder(context, i); - } - return _separatorBuilder(context, i); - } - - i = i ~/ 2; - final usersProvider = UsersBloc.of(context); if (i < items.length) { final item = items[i];