chore: migrate to latest dependencies
This commit is contained in:
@@ -6,7 +6,7 @@ class ImagePickerImpl extends ImagePickerRepository {
|
||||
@override
|
||||
Future<File?> pickImage() async {
|
||||
final picker = ImagePicker();
|
||||
final pickedFile = await picker.getImage(
|
||||
final pickedFile = await picker.pickImage(
|
||||
source: ImageSource.gallery,
|
||||
maxWidth: 400,
|
||||
);
|
||||
|
||||
@@ -8,7 +8,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
final StreamChatClient _client;
|
||||
|
||||
@override
|
||||
Future<ChatUser> connectUser(ChatUser user, String? token) async {
|
||||
Future<ChatUser> connectUser(ChatUser user, String token) async {
|
||||
Map<String, dynamic> extraData = {};
|
||||
if (user.image != null) {
|
||||
extraData['image'] = user.image;
|
||||
@@ -16,7 +16,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
if (user.name != null) {
|
||||
extraData['name'] = user.name;
|
||||
}
|
||||
await _client.disconnect();
|
||||
await _client.disconnectUser();
|
||||
await _client.connectUser(
|
||||
User(id: user.id!, extraData: extraData as Map<String, Object>),
|
||||
token,
|
||||
@@ -28,7 +28,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
Future<List<ChatUser>> getChatUsers() async {
|
||||
final result = await _client.queryUsers();
|
||||
final chatUsers = result.users
|
||||
.where((element) => element.id != _client.state.user!.id)
|
||||
.where((element) => element.id != _client.state.currentUser!.id)
|
||||
.map(
|
||||
(e) => ChatUser(
|
||||
id: e.id,
|
||||
@@ -42,7 +42,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
|
||||
@override
|
||||
Future<String> getToken(String userId) async {
|
||||
return _client.devToken(userId);
|
||||
return _client.devToken(userId).rawValue;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -52,7 +52,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
final channel = _client.channel('messaging', id: channelId, extraData: {
|
||||
'name': name!,
|
||||
'image': image!,
|
||||
'members': [_client.state.user!.id, ...members!],
|
||||
'members': [_client.state.currentUser!.id, ...members!],
|
||||
});
|
||||
await channel.watch();
|
||||
return channel;
|
||||
@@ -61,11 +61,11 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
@override
|
||||
Future<Channel> createSimpleChat(String? friendId) async {
|
||||
final channel = _client.channel('messaging',
|
||||
id: '${_client.state.user!.id.hashCode}${friendId.hashCode}',
|
||||
id: '${_client.state.currentUser!.id.hashCode}${friendId.hashCode}',
|
||||
extraData: {
|
||||
'members': [
|
||||
friendId,
|
||||
_client.state.user!.id,
|
||||
_client.state.currentUser!.id,
|
||||
],
|
||||
});
|
||||
await channel.watch();
|
||||
@@ -74,7 +74,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
|
||||
@override
|
||||
Future<void> logout() {
|
||||
return _client.disconnect();
|
||||
return _client.disconnectUser();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -84,6 +84,6 @@ class StreamApiLocalImpl extends StreamApiRepository {
|
||||
User(id: userId),
|
||||
token,
|
||||
);
|
||||
return _client.state.user!.name != userId;
|
||||
return _client.state.currentUser!.name != userId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
final StreamChatClient _client;
|
||||
|
||||
@override
|
||||
Future<ChatUser> connectUser(ChatUser user, String? token) async {
|
||||
Future<ChatUser> connectUser(ChatUser user, String token) async {
|
||||
Map<String, dynamic> extraData = {};
|
||||
if (user.image != null) {
|
||||
extraData['image'] = user.image;
|
||||
@@ -19,7 +19,7 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
if (user.name != null) {
|
||||
extraData['name'] = user.name;
|
||||
}
|
||||
await _client.disconnect();
|
||||
await _client.disconnectUser();
|
||||
await _client.connectUser(
|
||||
User(id: user.id!, extraData: extraData as Map<String, Object>),
|
||||
token,
|
||||
@@ -31,7 +31,7 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
Future<List<ChatUser>> getChatUsers() async {
|
||||
final result = await _client.queryUsers();
|
||||
final chatUsers = result.users
|
||||
.where((element) => element.id != _client.state.user!.id)
|
||||
.where((element) => element.id != _client.state.currentUser!.id)
|
||||
.map(
|
||||
(e) => ChatUser(
|
||||
id: e.id,
|
||||
@@ -44,7 +44,7 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String?> getToken(String userId) async {
|
||||
Future<String> getToken(String userId) async {
|
||||
//TODO: use your own implementation in Production
|
||||
final response = await http.post(
|
||||
Uri.parse('your_backend_url'),
|
||||
@@ -62,12 +62,13 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Channel> createGroupChat(String id, String? name, List<String?>? members,
|
||||
Future<Channel> createGroupChat(
|
||||
String id, String? name, List<String?>? members,
|
||||
{String? image}) async {
|
||||
final channel = _client.channel('messaging', id: id, extraData: {
|
||||
'name': name!,
|
||||
'image': image!,
|
||||
'members': [_client.state.user!.id, ...members!],
|
||||
'members': [_client.state.currentUser!.id, ...members!],
|
||||
});
|
||||
await channel.watch();
|
||||
return channel;
|
||||
@@ -76,11 +77,11 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
@override
|
||||
Future<Channel> createSimpleChat(String? friendId) async {
|
||||
final channel = _client.channel('messaging',
|
||||
id: '${_client.state.user!.id.hashCode}${friendId.hashCode}',
|
||||
id: '${_client.state.currentUser!.id.hashCode}${friendId.hashCode}',
|
||||
extraData: {
|
||||
'members': [
|
||||
friendId,
|
||||
_client.state.user!.id,
|
||||
_client.state.currentUser!.id,
|
||||
],
|
||||
});
|
||||
await channel.watch();
|
||||
@@ -89,7 +90,7 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
|
||||
@override
|
||||
Future<void> logout() async {
|
||||
return _client.disconnect();
|
||||
return _client.disconnectUser();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -99,6 +100,6 @@ class StreamApiImpl extends StreamApiRepository {
|
||||
User(id: userId),
|
||||
token,
|
||||
);
|
||||
return _client.state.user!.name != userId;
|
||||
return _client.state.currentUser!.name != userId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,21 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
|
||||
abstract class StreamApiRepository {
|
||||
Future<List<ChatUser>> getChatUsers();
|
||||
Future<String?> getToken(String userId);
|
||||
|
||||
Future<String> getToken(String userId);
|
||||
|
||||
Future<bool> connectIfExist(String userId);
|
||||
Future<ChatUser> connectUser(ChatUser user, String? token);
|
||||
|
||||
Future<ChatUser> connectUser(ChatUser user, String token);
|
||||
|
||||
Future<Channel> createGroupChat(
|
||||
String channelId, String? name, List<String?>? members,
|
||||
{String? image});
|
||||
String channelId,
|
||||
String? name,
|
||||
List<String?>? members, {
|
||||
String? image,
|
||||
});
|
||||
|
||||
Future<Channel> createSimpleChat(String? friendId);
|
||||
|
||||
Future<void> logout();
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import '../exceptions/auth_exception.dart';
|
||||
|
||||
class ProfileInput {
|
||||
ProfileInput({this.imageFile, this.name});
|
||||
|
||||
final File? imageFile;
|
||||
final String? name;
|
||||
}
|
||||
@@ -36,11 +37,12 @@ class ProfileSignInUseCase {
|
||||
input.imageFile, 'users/${auth.id}');
|
||||
}
|
||||
await _streamApiRepository.connectUser(
|
||||
ChatUser(
|
||||
name: input.name,
|
||||
id: auth.id,
|
||||
image: image,
|
||||
),
|
||||
token);
|
||||
ChatUser(
|
||||
name: input.name,
|
||||
id: auth.id,
|
||||
image: image,
|
||||
),
|
||||
token,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,10 @@ class MyApp extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
|
||||
SystemChrome.setEnabledSystemUIMode(
|
||||
SystemUiMode.manual,
|
||||
overlays: [SystemUiOverlay.bottom],
|
||||
);
|
||||
|
||||
return MultiRepositoryProvider(
|
||||
providers: buildRepositories(_streamChatClient),
|
||||
@@ -36,9 +39,9 @@ class MyApp extends StatelessWidget {
|
||||
client: _streamChatClient,
|
||||
streamChatThemeData:
|
||||
StreamChatThemeData.fromTheme(Theme.of(context)).copyWith(
|
||||
ownMessageTheme: MessageTheme(
|
||||
ownMessageTheme: MessageThemeData(
|
||||
messageBackgroundColor: Theme.of(context).accentColor,
|
||||
messageText: TextStyle(color: Colors.white),
|
||||
messageTextStyle: TextStyle(color: Colors.white),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -80,7 +80,7 @@ class MyChannelPreview extends StatelessWidget {
|
||||
tag: heroTag!,
|
||||
child: StreamChannel(
|
||||
channel: channel,
|
||||
child: ChannelImage(
|
||||
child: ChannelAvatar(
|
||||
onTap: onImageTap,
|
||||
),
|
||||
),
|
||||
@@ -91,8 +91,9 @@ class MyChannelPreview extends StatelessWidget {
|
||||
children: <Widget>[
|
||||
Flexible(
|
||||
child: ChannelName(
|
||||
textStyle:
|
||||
StreamChatTheme.of(context).channelPreviewTheme.title,
|
||||
textStyle: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.titleStyle,
|
||||
),
|
||||
),
|
||||
StreamBuilder<List<Member>>(
|
||||
@@ -102,7 +103,8 @@ class MyChannelPreview extends StatelessWidget {
|
||||
if (!snapshot.hasData ||
|
||||
snapshot.data!.isEmpty ||
|
||||
!snapshot.data!.any((Member e) =>
|
||||
e.user!.id == channel.client.state.user!.id)) {
|
||||
e.user!.id ==
|
||||
channel.client.state.currentUser!.id)) {
|
||||
return SizedBox();
|
||||
}
|
||||
return ChannelUnreadIndicator(
|
||||
@@ -122,7 +124,7 @@ class MyChannelPreview extends StatelessWidget {
|
||||
(m) => !m.isDeleted && m.shadowed != true,
|
||||
);
|
||||
if (lastMessage?.user?.id ==
|
||||
StreamChat.of(context).user!.id) {
|
||||
StreamChat.of(context).currentUser!.id) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(right: 4.0),
|
||||
child: SendingIndicator(
|
||||
@@ -131,9 +133,9 @@ class MyChannelPreview extends StatelessWidget {
|
||||
.channelPreviewTheme
|
||||
.indicatorIconSize,
|
||||
isMessageRead: channel.state!.read
|
||||
?.where((element) =>
|
||||
.where((element) =>
|
||||
element.user.id !=
|
||||
channel.client.state.user!.id)
|
||||
channel.client.state.currentUser!.id)
|
||||
.where((element) => element.lastRead
|
||||
.isAfter(lastMessage.createdAt))
|
||||
.isNotEmpty ==
|
||||
@@ -181,7 +183,9 @@ class MyChannelPreview extends StatelessWidget {
|
||||
|
||||
return Text(
|
||||
stringDate,
|
||||
style: StreamChatTheme.of(context).channelPreviewTheme.lastMessageAt,
|
||||
style: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.lastMessageAtStyle,
|
||||
);
|
||||
},
|
||||
);
|
||||
@@ -199,23 +203,29 @@ class MyChannelPreview extends StatelessWidget {
|
||||
' Channel is muted',
|
||||
style: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitle!
|
||||
.subtitleStyle!
|
||||
.copyWith(
|
||||
color: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitle!
|
||||
.subtitleStyle!
|
||||
.color,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
// TODO
|
||||
return TypingIndicator(
|
||||
channel: channel,
|
||||
alternativeWidget: _buildLastMessage(context),
|
||||
style: StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
|
||||
color:
|
||||
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.color,
|
||||
style: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.copyWith(
|
||||
color: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.color,
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -255,23 +265,31 @@ class MyChannelPreview extends StatelessWidget {
|
||||
text,
|
||||
lastMessage.mentionedUsers,
|
||||
lastMessage.attachments,
|
||||
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
|
||||
color: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitle!
|
||||
.color,
|
||||
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
|
||||
? FontStyle.italic
|
||||
: FontStyle.normal),
|
||||
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
|
||||
color: StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitle!
|
||||
.color,
|
||||
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
|
||||
? FontStyle.italic
|
||||
: FontStyle.normal,
|
||||
fontWeight: FontWeight.bold),
|
||||
StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.copyWith(
|
||||
color:
|
||||
StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.color,
|
||||
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
|
||||
? FontStyle.italic
|
||||
: FontStyle.normal),
|
||||
StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.copyWith(
|
||||
color:
|
||||
StreamChatTheme.of(context)
|
||||
.channelPreviewTheme
|
||||
.subtitleStyle!
|
||||
.color,
|
||||
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
|
||||
? FontStyle.italic
|
||||
: FontStyle.normal,
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
|
||||
@@ -25,7 +25,7 @@ class ChatView extends StatelessWidget {
|
||||
child: ChannelListView(
|
||||
filter: Filter.in_(
|
||||
'members',
|
||||
[StreamChat.of(context).user!.id],
|
||||
[StreamChat.of(context).currentUser!.id],
|
||||
),
|
||||
sort: [SortOption('last_message_at')],
|
||||
channelPreviewBuilder: (context, channel) {
|
||||
@@ -37,10 +37,11 @@ class ChatView extends StatelessWidget {
|
||||
onImageTap: () {
|
||||
String? name;
|
||||
String? image;
|
||||
final currentUser = StreamChat.of(context).client.state.user;
|
||||
final currentUser =
|
||||
StreamChat.of(context).client.state.currentUser;
|
||||
if (channel.isGroup) {
|
||||
name = channel.extraData['name'];
|
||||
image = channel.extraData['image'];
|
||||
name = channel.extraData['name'] as String?;
|
||||
image = channel.extraData['image'] as String?;
|
||||
} else {
|
||||
final friend = channel.state!.members
|
||||
.where((element) => element.userId != currentUser!.id)
|
||||
|
||||
@@ -10,9 +10,9 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||
class SettingsView extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final user = StreamChat.of(context).client.state.user!;
|
||||
final user = StreamChat.of(context).client.state.currentUser!;
|
||||
final image = user.extraData['image'];
|
||||
final textColor = Theme.of(context).appBarTheme.color;
|
||||
final textColor = Theme.of(context).appBarTheme.backgroundColor;
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider(
|
||||
|
||||
@@ -10,17 +10,17 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
flutter_bloc: ^7.0.0
|
||||
stream_chat_flutter: ^2.0.0-nullsafety.3
|
||||
uuid: ^3.0.4
|
||||
flutter_bloc: ^7.1.0
|
||||
stream_chat_flutter: ^3.0.0
|
||||
uuid: ^3.0.5
|
||||
|
||||
firebase_core: ^1.2.0
|
||||
google_sign_in: ^5.0.3
|
||||
firebase_auth: ^1.2.0
|
||||
firebase_storage: ^8.1.0
|
||||
shared_preferences: ^2.0.5
|
||||
firebase_core: ^1.7.0
|
||||
google_sign_in: ^5.1.1
|
||||
firebase_auth: ^3.1.2
|
||||
firebase_storage: ^10.0.4
|
||||
shared_preferences: ^2.0.8
|
||||
http: any
|
||||
collection: ^1.15.0-nullsafety.4
|
||||
collection: ^1.15.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
@@ -26,7 +26,9 @@ Future<void> main() async {
|
||||
|
||||
class IMessage extends StatelessWidget {
|
||||
final StreamChatClient client;
|
||||
|
||||
IMessage({required this.client});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
initializeDateFormatting('en_US', null);
|
||||
@@ -58,9 +60,7 @@ class ChatLoader extends StatelessWidget {
|
||||
Filter.equal('type', 'messaging'),
|
||||
]),
|
||||
sort: [SortOption('last_message_at')],
|
||||
pagination: PaginationParams(
|
||||
limit: 20,
|
||||
),
|
||||
limit: 20,
|
||||
emptyBuilder: (BuildContext context) {
|
||||
return Center(
|
||||
child: Text('Looks like you are not in any channels'),
|
||||
|
||||
@@ -24,20 +24,20 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
intl: ^0.17.0
|
||||
stream_chat_flutter: ^2.2.0
|
||||
animations: ^2.0.0
|
||||
stream_chat_flutter: ^3.0.0
|
||||
animations: ^2.0.1
|
||||
collection: ^1.15.0
|
||||
cached_network_image: ^3.0.0
|
||||
cached_network_image: ^3.1.0
|
||||
|
||||
|
||||
# The following adds the Cupertino Icons font to your application.
|
||||
# Use with the CupertinoIcons class for iOS style icons.
|
||||
cupertino_icons: ^1.0.0
|
||||
cupertino_icons: ^1.0.3
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
pedantic: ^1.9.0
|
||||
pedantic: ^1.11.1
|
||||
# For information on the generic Dart part of this file, see the
|
||||
# following page: https://dart.dev/tools/pub/pubspec
|
||||
|
||||
|
||||
@@ -13,14 +13,14 @@ class ChannelFileDisplayScreen extends StatefulWidget {
|
||||
/// limit: the number of users to return (max is 30)
|
||||
/// offset: the offset (max is 1000)
|
||||
/// message_limit: how many messages should be included to each channel
|
||||
final PaginationParams? paginationParams;
|
||||
final PaginationParams paginationParams;
|
||||
|
||||
/// The builder used when the file list is empty.
|
||||
final WidgetBuilder? emptyBuilder;
|
||||
|
||||
const ChannelFileDisplayScreen({
|
||||
this.sortOptions,
|
||||
this.paginationParams,
|
||||
this.paginationParams = const PaginationParams(limit: 20),
|
||||
this.emptyBuilder,
|
||||
});
|
||||
|
||||
@@ -151,7 +151,7 @@ class _ChannelFileDisplayScreenState extends State<ChannelFileDisplayScreen> {
|
||||
['file'],
|
||||
),
|
||||
sort: widget.sortOptions,
|
||||
pagination: widget.paginationParams!.copyWith(
|
||||
pagination: widget.paginationParams.copyWith(
|
||||
offset: messageSearchBloc.messageResponses?.length ?? 0,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -90,7 +90,7 @@ class _ChannelList extends State<ChannelList> {
|
||||
),
|
||||
],
|
||||
pullToRefresh: false,
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
limit: 20,
|
||||
emptyBuilder: (_) {
|
||||
return LayoutBuilder(
|
||||
builder: (context, viewportConstraints) {
|
||||
@@ -160,9 +160,7 @@ class _ChannelList extends State<ChannelList> {
|
||||
swipeToAction: true,
|
||||
filter: Filter.in_('members', [user!.id]),
|
||||
presence: true,
|
||||
pagination: PaginationParams(
|
||||
limit: 20,
|
||||
),
|
||||
limit: 20,
|
||||
onViewInfoTap: (channel) {
|
||||
Navigator.pop(context);
|
||||
if (channel.memberCount == 2 && channel.isDistinct) {
|
||||
|
||||
@@ -14,7 +14,7 @@ class ChannelMediaDisplayScreen extends StatefulWidget {
|
||||
/// limit: the number of users to return (max is 30)
|
||||
/// offset: the offset (max is 1000)
|
||||
/// message_limit: how many messages should be included to each channel
|
||||
final PaginationParams? paginationParams;
|
||||
final PaginationParams paginationParams;
|
||||
|
||||
/// The builder used when the file list is empty.
|
||||
final WidgetBuilder? emptyBuilder;
|
||||
@@ -26,7 +26,7 @@ class ChannelMediaDisplayScreen extends StatefulWidget {
|
||||
const ChannelMediaDisplayScreen({
|
||||
required this.messageTheme,
|
||||
this.sortOptions,
|
||||
this.paginationParams,
|
||||
this.paginationParams = const PaginationParams(limit: 20),
|
||||
this.emptyBuilder,
|
||||
this.onShowMessage,
|
||||
});
|
||||
@@ -163,7 +163,7 @@ class _ChannelMediaDisplayScreenState extends State<ChannelMediaDisplayScreen> {
|
||||
['image', 'video'],
|
||||
),
|
||||
sort: widget.sortOptions,
|
||||
pagination: widget.paginationParams!.copyWith(
|
||||
pagination: widget.paginationParams.copyWith(
|
||||
offset: messageSearchBloc.messageResponses?.length ?? 0,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -235,7 +235,6 @@ class _ChatInfoScreenState extends State<ChatInfoScreen> {
|
||||
direction: SortOption.ASC,
|
||||
),
|
||||
],
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
onShowMessage: (m, c) async {
|
||||
final client = StreamChat.of(context).client;
|
||||
final message = m;
|
||||
@@ -296,7 +295,6 @@ class _ChatInfoScreenState extends State<ChatInfoScreen> {
|
||||
direction: SortOption.ASC,
|
||||
),
|
||||
],
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
onShowMessage: (m, c) async {
|
||||
final client = StreamChat.of(context).client;
|
||||
final message = m;
|
||||
@@ -356,7 +354,6 @@ class _ChatInfoScreenState extends State<ChatInfoScreen> {
|
||||
direction: SortOption.ASC,
|
||||
),
|
||||
],
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -525,7 +525,6 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
|
||||
direction: SortOption.ASC,
|
||||
),
|
||||
],
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
onShowMessage: (m, c) async {
|
||||
final client = StreamChat.of(context).client;
|
||||
final message = m;
|
||||
@@ -737,9 +736,7 @@ class _GroupInfoScreenState extends State<GroupInfoScreen> {
|
||||
setState(() {});
|
||||
},
|
||||
crossAxisCount: 4,
|
||||
pagination: PaginationParams(
|
||||
limit: 25,
|
||||
),
|
||||
limit: 25,
|
||||
filter: Filter.and(
|
||||
[
|
||||
if (_searchController!.text.isNotEmpty)
|
||||
|
||||
@@ -303,9 +303,7 @@ class _NewChatScreenState extends State<NewChatScreen> {
|
||||
_chipInputTextFieldState!.removeItem(user);
|
||||
}
|
||||
},
|
||||
pagination: PaginationParams(
|
||||
limit: 25,
|
||||
),
|
||||
limit: 25,
|
||||
filter: Filter.and([
|
||||
if (_userNameQuery.isNotEmpty)
|
||||
Filter.autoComplete('name', _userNameQuery),
|
||||
|
||||
@@ -244,9 +244,7 @@ class _NewGroupChatScreenState extends State<NewGroupChatScreen> {
|
||||
});
|
||||
}
|
||||
},
|
||||
pagination: PaginationParams(
|
||||
limit: 25,
|
||||
),
|
||||
limit: 25,
|
||||
filter: Filter.and([
|
||||
if (_userNameQuery.isNotEmpty)
|
||||
Filter.autoComplete('name', _userNameQuery),
|
||||
|
||||
@@ -14,7 +14,7 @@ class PinnedMessagesScreen extends StatefulWidget {
|
||||
/// limit: the number of users to return (max is 30)
|
||||
/// offset: the offset (max is 1000)
|
||||
/// message_limit: how many messages should be included to each channel
|
||||
final PaginationParams? paginationParams;
|
||||
final PaginationParams paginationParams;
|
||||
|
||||
/// The builder used when the file list is empty.
|
||||
final WidgetBuilder? emptyBuilder;
|
||||
@@ -26,7 +26,7 @@ class PinnedMessagesScreen extends StatefulWidget {
|
||||
const PinnedMessagesScreen({
|
||||
required this.messageTheme,
|
||||
this.sortOptions,
|
||||
this.paginationParams,
|
||||
this.paginationParams = const PaginationParams(limit: 20),
|
||||
this.emptyBuilder,
|
||||
this.onShowMessage,
|
||||
});
|
||||
@@ -156,7 +156,7 @@ class _PinnedMessagesScreenState extends State<PinnedMessagesScreen> {
|
||||
true,
|
||||
),
|
||||
sort: widget.sortOptions,
|
||||
pagination: widget.paginationParams!.copyWith(
|
||||
pagination: widget.paginationParams.copyWith(
|
||||
offset: messageSearchBloc.messageResponses?.length ?? 0,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -23,7 +23,7 @@ class UserMentionsPage extends StatelessWidget {
|
||||
direction: SortOption.ASC,
|
||||
),
|
||||
],
|
||||
paginationParams: PaginationParams(limit: 20),
|
||||
limit: 20,
|
||||
showResultCount: false,
|
||||
emptyBuilder: (_) {
|
||||
return LayoutBuilder(
|
||||
|
||||
@@ -7,7 +7,7 @@ environment:
|
||||
sdk: '>=2.12.0 <3.0.0'
|
||||
|
||||
dependencies:
|
||||
flutter_app_badger: ^1.2.0
|
||||
flutter_app_badger: ^1.3.0
|
||||
flutter:
|
||||
sdk: flutter
|
||||
stream_chat_flutter:
|
||||
@@ -25,17 +25,17 @@ dependencies:
|
||||
url: https://github.com/GetStream/stream-chat-flutter.git
|
||||
ref: develop
|
||||
path: packages/stream_chat_localizations
|
||||
flutter_local_notifications: ^5.0.0+4
|
||||
flutter_local_notifications: ^8.2.0
|
||||
flutter_svg: ^0.22.0
|
||||
flutter_secure_storage: ^4.2.0
|
||||
flutter_secure_storage: ^4.2.1
|
||||
yaml: ^3.1.0
|
||||
uuid: ^3.0.4
|
||||
uuid: ^3.0.5
|
||||
streaming_shared_preferences: ^2.0.0
|
||||
lottie: ^1.0.1
|
||||
collection: ^1.15.0-nullsafety.4
|
||||
lottie: ^1.2.1
|
||||
collection: ^1.15.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_launcher_icons: ^0.9.0
|
||||
flutter_launcher_icons: ^0.9.2
|
||||
test: any
|
||||
|
||||
dependency_overrides:
|
||||
|
||||
Reference in New Issue
Block a user