[CreateChannelPage] Refactor to use newly build UserListView
This commit is contained in:
+23
-70
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user