A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.9 KiB

part of '../neon_spreed.dart';
class SpreedRoomIcon extends StatelessWidget {
const SpreedRoomIcon({
required this.roomType,
this.roomName,
this.backgroundColor,
this.foregroundColor,
super.key,
}) : assert(
(roomType != spreed.RoomType.oneToOne && roomType != spreed.RoomType.oneToOneFormer) || roomName != null,
'roomName has to be set when roomType is oneToOne',
);
final spreed.RoomType roomType;
final String? roomName;
final Color? backgroundColor;
final Color? foregroundColor;
@override
Widget build(final BuildContext context) {
if (roomType == spreed.RoomType.oneToOne || roomType == spreed.RoomType.oneToOneFormer) {
return NeonUserAvatar(
username: roomName,
account: NeonProvider.of<AccountsBloc>(context).activeAccount.value!,
backgroundColor: backgroundColor,
foregroundColor: foregroundColor,
);
}
if (roomType == spreed.RoomType.changelog) {
return CircleAvatar(
radius: smallIconSize,
backgroundColor: backgroundColor ?? Theme.of(context).colorScheme.primary,
child: VectorGraphic(
width: smallIconSize,
height: smallIconSize,
colorFilter: ColorFilter.mode(foregroundColor ?? Theme.of(context).colorScheme.onPrimary, BlendMode.srcIn),
loader: const AssetBytesLoader(
'assets/app.svg.vec',
packageName: 'neon_spreed',
),
semanticsLabel: NeonLocalizations.of(context).nextcloudLogo,
),
);
}
if (roomType == spreed.RoomType.group || roomType == spreed.RoomType.public) {
return NeonGroupAvatar(
icon: roomType == spreed.RoomType.group ? Icons.group : Icons.public,
backgroundColor: backgroundColor,
foregroundColor: foregroundColor,
);
}
throw UnimplementedError('Room type $roomType has no implemented icon');
}
}