build method

  1. @override
dynamic build(
  1. dynamic arg
)

Implementation

@override
AvatarInfo build(arg) {
  final roomId = arg;

  final fallback = AvatarInfo(uniqueId: roomId);

  final room = ref.watch(maybeRoomProvider(roomId)).valueOrNull;
  if (room == null) {
    return fallback;
  }

  final displayName = ref.read(roomDisplayNameProvider(roomId)).valueOrNull;
  final avatarData = ref.read(roomAvatarProvider(roomId)).valueOrNull;

  _avatarListener = ref.listen(
    roomAvatarProvider(roomId),
    (previous, next) => _maybeUpdate(roomId),
  );
  _displayNameListener = ref.listen(
    roomDisplayNameProvider(roomId),
    (previous, next) => _maybeUpdate(roomId),
  );

  ref.onDispose(() {
    _displayNameListener.close();
    _avatarListener.close();
  });

  return AvatarInfo(
    uniqueId: roomId,
    displayName: displayName,
    avatar: avatarData,
  );
}