diff --git a/lib/src/publication/local_track_publication.dart b/lib/src/publication/local_track_publication.dart index 891136a..565568c 100644 --- a/lib/src/publication/local_track_publication.dart +++ b/lib/src/publication/local_track_publication.dart @@ -6,10 +6,7 @@ import '../proto/livekit_models.pb.dart' as lk_models; import '../track/local.dart'; import 'track_publication.dart'; -class LocalTrackPublication extends TrackPublication { - @override - covariant T? track; - +class LocalTrackPublication extends TrackPublication { @override final LocalParticipant participant; @@ -27,7 +24,7 @@ class LocalTrackPublication extends TrackPublication { } @override - Future updateTrack(covariant T? newValue) async { + Future updateTrack(T? newValue) async { final didUpdate = await super.updateTrack(newValue); if (newValue != null) { diff --git a/lib/src/publication/remote_track_publication.dart b/lib/src/publication/remote_track_publication.dart index 145fe68..1ae5cfe 100644 --- a/lib/src/publication/remote_track_publication.dart +++ b/lib/src/publication/remote_track_publication.dart @@ -30,10 +30,8 @@ class RendererVisibility { /// Represents a track publication from a RemoteParticipant. Provides methods to /// control if we should subscribe to the track, and its quality (for video). -class RemoteTrackPublication extends TrackPublication { - @override - covariant T? track; - +class RemoteTrackPublication + extends TrackPublication { @override final RemoteParticipant participant; diff --git a/lib/src/publication/track_publication.dart b/lib/src/publication/track_publication.dart index 31ab910..4759482 100644 --- a/lib/src/publication/track_publication.dart +++ b/lib/src/publication/track_publication.dart @@ -13,16 +13,16 @@ import '../types.dart'; /// Base for [RemoteTrackPublication] and [LocalTrackPublication], /// can not be instantiated directly. -abstract class TrackPublication extends Disposable { +abstract class TrackPublication extends Disposable { final String sid; final String name; final lk_models.TrackType kind; final TrackSource source; - // Relevant type must be implemented - abstract Track? track; + /// The current [Track] for this publication (readonly). + T? get track => _track; + T? _track; - // Relevant type must be implemented /// The [Participant] this publication belongs to. abstract final Participant participant; @@ -71,11 +71,11 @@ abstract class TrackPublication extends Disposable { // Returns true if value has changed. // Intended for internal use only. @internal - Future updateTrack(Track? newValue) async { - if (track == newValue) return false; + Future updateTrack(T? newValue) async { + if (_track == newValue) return false; // dispose previous track (if exists) - await track?.dispose(); - track = newValue; + await _track?.dispose(); + _track = newValue; return true; } }