Switch to new event system (#9)

* `SignalEvents` and `synchronized` mode for `EventsListenable`

* cascade syntax

* clean up

* `RoomEvents`

* `ParticipantEvents`

* all events implemented

* make it compile with M1 macs

* dispose logic

* cleaner connect logic

* ask to publish

* fix initial EngineTrackAddedEvent glitch

* fix unpublishTrack bug

* clean up

* better events docs

* organize event types

* clean up

* cleaner wait logic

* wait for event instead of using Completer

* notifyListeners
This commit is contained in:
Hiroshi Horie
2021-09-24 23:37:26 +09:00
committed by GitHub
parent f4bd82a919
commit 6445b8d2a8
36 changed files with 1270 additions and 948 deletions
+12 -11
View File
@@ -1,28 +1,29 @@
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
import 'package:livekit_client/src/classes/change_notifier.dart';
import 'package:uuid/uuid.dart';
import '../proto/livekit_models.pb.dart' as lk_models;
class TrackDimension {
int width;
int height;
TrackDimension(this.width, this.height);
}
/// Wrapper around a MediaStreamTrack with additional metadata.
class Track {
/// Base for [AudioTrack] and [VideoTrack],
/// can not be instantiated directly.
abstract class Track extends LKChangeNotifier {
static const cameraName = 'camera';
static const screenShareName = 'screen';
String name;
lk_models.TrackType kind;
final String name;
final lk_models.TrackType kind;
rtc.MediaStreamTrack mediaStreamTrack;
String? sid;
rtc.RTCRtpTransceiver? transceiver;
String? _cid;
Track(this.kind, this.name, this.mediaStreamTrack);
Track(
this.kind,
this.name,
this.mediaStreamTrack,
);
bool get muted => mediaStreamTrack.muted == null ? false : mediaStreamTrack.muted!;