migrate chatty

This commit is contained in:
Salvatore Giordano
2021-05-18 17:15:37 +02:00
parent 33622093e0
commit bc655e0dc4
27 changed files with 181 additions and 159 deletions
+18 -19
View File
@@ -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!),
],
),
);
+6 -6
View File
@@ -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(