migrate chatty
This commit is contained in:
@@ -23,11 +23,10 @@ class ChatView extends StatelessWidget {
|
||||
),
|
||||
body: ChannelsBloc(
|
||||
child: ChannelListView(
|
||||
filter: {
|
||||
'members': {
|
||||
'\$in': [StreamChat.of(context).user?.id],
|
||||
}
|
||||
},
|
||||
filter: Filter.in_(
|
||||
'members',
|
||||
[StreamChat.of(context).user!.id],
|
||||
),
|
||||
sort: [SortOption('last_message_at')],
|
||||
channelPreviewBuilder: (context, channel) {
|
||||
return Container(
|
||||
@@ -36,22 +35,22 @@ class ChatView extends StatelessWidget {
|
||||
channel: channel,
|
||||
heroTag: channel.id,
|
||||
onImageTap: () {
|
||||
String name;
|
||||
String image;
|
||||
String? name;
|
||||
String? image;
|
||||
final currentUser = StreamChat.of(context).client.state.user;
|
||||
if (channel.isGroup) {
|
||||
name = channel.extraData['name'];
|
||||
image = channel.extraData['image'];
|
||||
} else {
|
||||
final friend = channel.state.members
|
||||
.where((element) => element.userId != currentUser.id)
|
||||
final friend = channel.state!.members
|
||||
.where((element) => element.userId != currentUser!.id)
|
||||
.first
|
||||
.user;
|
||||
.user!;
|
||||
name = friend.name;
|
||||
image = friend.extraData['image'];
|
||||
image = friend.extraData['image'] as String?;
|
||||
}
|
||||
|
||||
return Navigator.of(context).push(
|
||||
Navigator.of(context).push(
|
||||
PageRouteBuilder(
|
||||
barrierColor: Colors.black45,
|
||||
barrierDismissible: true,
|
||||
@@ -110,15 +109,15 @@ class ChannelPage extends StatelessWidget {
|
||||
|
||||
class ChatDetailView extends StatelessWidget {
|
||||
const ChatDetailView({
|
||||
Key key,
|
||||
Key? key,
|
||||
this.image,
|
||||
this.name,
|
||||
this.channelId,
|
||||
}) : super(key: key);
|
||||
|
||||
final String image;
|
||||
final String name;
|
||||
final String channelId;
|
||||
final String? image;
|
||||
final String? name;
|
||||
final String? channelId;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -135,10 +134,10 @@ class ChatDetailView extends StatelessWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Hero(
|
||||
tag: channelId,
|
||||
tag: channelId!,
|
||||
child: ClipOval(
|
||||
child: Image.network(
|
||||
image,
|
||||
image!,
|
||||
height: 180,
|
||||
width: 180,
|
||||
fit: BoxFit.cover,
|
||||
@@ -146,7 +145,7 @@ class ChatDetailView extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
Text(
|
||||
name,
|
||||
name!,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 22,
|
||||
|
||||
@@ -143,9 +143,9 @@ class FriendsSelectionView extends StatelessWidget {
|
||||
CircleAvatar(
|
||||
radius: 30,
|
||||
backgroundImage: NetworkImage(
|
||||
chatUserState.chatUser.image),
|
||||
chatUserState.chatUser.image!),
|
||||
),
|
||||
Text(chatUserState.chatUser.name),
|
||||
Text(chatUserState.chatUser.name!),
|
||||
],
|
||||
),
|
||||
Positioned(
|
||||
@@ -178,9 +178,9 @@ class FriendsSelectionView extends StatelessWidget {
|
||||
},
|
||||
leading: CircleAvatar(
|
||||
backgroundImage:
|
||||
NetworkImage(chatUserState.chatUser.image),
|
||||
NetworkImage(chatUserState.chatUser.image!),
|
||||
),
|
||||
title: Text(chatUserState.chatUser.name),
|
||||
title: Text(chatUserState.chatUser.name!),
|
||||
trailing: isGroup
|
||||
? Checkbox(
|
||||
value: chatUserState.selected,
|
||||
|
||||
@@ -13,8 +13,8 @@ class GroupSelectionState {
|
||||
this.channel,
|
||||
this.isLoading = false,
|
||||
});
|
||||
final File file;
|
||||
final Channel channel;
|
||||
final File? file;
|
||||
final Channel? channel;
|
||||
final bool isLoading;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class GroupSelectionView extends StatelessWidget {
|
||||
context,
|
||||
Scaffold(
|
||||
body: StreamChannel(
|
||||
channel: snapshot.channel,
|
||||
channel: snapshot.channel!,
|
||||
child: ChannelPage(),
|
||||
),
|
||||
),
|
||||
@@ -60,9 +60,9 @@ class GroupSelectionView extends StatelessWidget {
|
||||
children: [
|
||||
AvatarImageView(
|
||||
onTap: context.read<GroupSelectionCubit>().pickImage,
|
||||
child: snapshot?.file != null
|
||||
child: snapshot.file != null
|
||||
? Image.file(
|
||||
snapshot?.file,
|
||||
snapshot.file!,
|
||||
fit: BoxFit.cover,
|
||||
)
|
||||
: Icon(
|
||||
@@ -104,9 +104,9 @@ class GroupSelectionView extends StatelessWidget {
|
||||
CircleAvatar(
|
||||
radius: 30,
|
||||
backgroundImage:
|
||||
NetworkImage(chatUserState.chatUser.image),
|
||||
NetworkImage(chatUserState.chatUser.image!),
|
||||
),
|
||||
Text(chatUserState.chatUser.name),
|
||||
Text(chatUserState.chatUser.name!),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
@@ -36,7 +36,7 @@ class HomeView extends StatelessWidget {
|
||||
|
||||
class HomeNavigationBar extends StatelessWidget {
|
||||
const HomeNavigationBar({
|
||||
Key key,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -110,16 +110,16 @@ class HomeNavigationBar extends StatelessWidget {
|
||||
|
||||
class _HomeNavItem extends StatelessWidget {
|
||||
const _HomeNavItem({
|
||||
Key key,
|
||||
Key? key,
|
||||
this.iconData,
|
||||
this.text,
|
||||
this.onTap,
|
||||
this.selected = false,
|
||||
}) : super(key: key);
|
||||
|
||||
final IconData iconData;
|
||||
final String text;
|
||||
final VoidCallback onTap;
|
||||
final IconData? iconData;
|
||||
final String? text;
|
||||
final VoidCallback? onTap;
|
||||
final bool selected;
|
||||
|
||||
@override
|
||||
@@ -135,7 +135,7 @@ class _HomeNavItem extends StatelessWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(iconData, color: color),
|
||||
Text(text, style: TextStyle(color: color)),
|
||||
Text(text!, style: TextStyle(color: color)),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
@@ -10,8 +10,8 @@ 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 image = user?.extraData['image'];
|
||||
final user = StreamChat.of(context).client.state.user!;
|
||||
final image = user.extraData['image'];
|
||||
final textColor = Theme.of(context).appBarTheme.color;
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
@@ -48,7 +48,7 @@ class SettingsView extends StatelessWidget {
|
||||
onTap: () => null,
|
||||
child: image != null
|
||||
? Image.network(
|
||||
image,
|
||||
image as String,
|
||||
fit: BoxFit.cover,
|
||||
)
|
||||
: Icon(
|
||||
|
||||
Reference in New Issue
Block a user