[CreateChannelPage] Refactor to use newly build UserListView

This commit is contained in:
xsahil03x
2020-11-18 00:09:57 +05:30
parent 9b36c2348e
commit c8001de7ad
+23 -70
View File
@@ -268,12 +268,7 @@ class CreateChannelPage extends StatefulWidget {
} }
class _CreateChannelPageState extends State<CreateChannelPage> { class _CreateChannelPageState extends State<CreateChannelPage> {
final ScrollController _scrollController = ScrollController();
Client client;
List<User> users = [];
List<User> selectedUsers = []; List<User> selectedUsers = [];
int offset = 0;
bool loading = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -292,31 +287,29 @@ class _CreateChannelPageState extends State<CreateChannelPage> {
); );
} }
ListView _buildListView() { Widget _buildListView() {
return ListView.builder( return UsersBloc(
controller: _scrollController, child: UserListView(
itemBuilder: _itemBuilder, pagination: PaginationParams(
itemCount: users.length, limit: 25,
); ),
} sort: [
SortOption(
Widget _itemBuilder(context, i) { 'name',
final user = users[i]; direction: SortOption.ASC,
return ListTile( ),
onLongPress: () { ],
_selectUser(user); onUserLongPress: (user) {
}, _selectUser(user);
selected: selectedUsers.contains(user), },
onTap: () { selectedUsers: selectedUsers,
if (selectedUsers.isNotEmpty) { onUserTap: (user, _) {
return _selectUser(user); if (selectedUsers.isNotEmpty) {
} return _selectUser(user);
_createChannel(context, [user]); }
}, _createChannel(context, [user]);
leading: UserAvatar( },
user: user,
), ),
title: Text(user.name),
); );
} }
@@ -373,6 +366,7 @@ class _CreateChannelPageState extends State<CreateChannelPage> {
List<User> users, [ List<User> users, [
String name, String name,
]) async { ]) async {
final client = StreamChat.of(context).client;
final channel = client.channel('messaging', extraData: { final channel = client.channel('messaging', extraData: {
'members': [ 'members': [
client.state.user.id, client.state.user.id,
@@ -405,47 +399,6 @@ class _CreateChannelPageState extends State<CreateChannelPage> {
}); });
} }
} }
@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<void> _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 { class NewChatScreen extends StatefulWidget {