diff --git a/example/lib/main.dart b/example/lib/main.dart index 5fba1c06..0f84c3a8 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -268,12 +268,7 @@ class CreateChannelPage extends StatefulWidget { } class _CreateChannelPageState extends State { - final ScrollController _scrollController = ScrollController(); - Client client; - List users = []; List selectedUsers = []; - int offset = 0; - bool loading = false; @override Widget build(BuildContext context) { @@ -292,31 +287,29 @@ class _CreateChannelPageState extends State { ); } - ListView _buildListView() { - return ListView.builder( - controller: _scrollController, - itemBuilder: _itemBuilder, - itemCount: users.length, - ); - } - - Widget _itemBuilder(context, i) { - final user = users[i]; - return ListTile( - onLongPress: () { - _selectUser(user); - }, - selected: selectedUsers.contains(user), - onTap: () { - if (selectedUsers.isNotEmpty) { - return _selectUser(user); - } - _createChannel(context, [user]); - }, - leading: UserAvatar( - user: user, + Widget _buildListView() { + return UsersBloc( + child: UserListView( + pagination: PaginationParams( + limit: 25, + ), + sort: [ + SortOption( + 'name', + direction: SortOption.ASC, + ), + ], + onUserLongPress: (user) { + _selectUser(user); + }, + selectedUsers: selectedUsers, + onUserTap: (user, _) { + if (selectedUsers.isNotEmpty) { + return _selectUser(user); + } + _createChannel(context, [user]); + }, ), - title: Text(user.name), ); } @@ -373,6 +366,7 @@ class _CreateChannelPageState extends State { List users, [ String name, ]) async { + final client = StreamChat.of(context).client; final channel = client.channel('messaging', extraData: { 'members': [ client.state.user.id, @@ -405,47 +399,6 @@ class _CreateChannelPageState extends State { }); } } - - @override - void initState() { - super.initState(); - - client = StreamChat.of(context).client; - - _scrollController.addListener(() async { - if (!loading && - _scrollController.offset >= - _scrollController.position.maxScrollExtent - 100) { - offset += 25; - await _queryUsers(); - } - }); - - _queryUsers(); - } - - Future _queryUsers() { - loading = true; - return client.queryUsers( - pagination: PaginationParams( - limit: 25, - offset: offset, - ), - sort: [ - SortOption( - 'name', - direction: SortOption.ASC, - ), - ], - ).then((value) { - setState(() { - users = [ - ...users, - ...value.users, - ]; - }); - }).whenComplete(() => loading = false); - } } class NewChatScreen extends StatefulWidget {