Video optimizations (#18)
* use events for `VideoTrackRenderer` * logger * implemented visibility detection * optimize code with 1 param debounce func * stop pending visibility event when disposed * clean up * mark internal * report to track * call dispose on pub and track * use internal events to receive visibility events * clean up visibility for disposed track * listen to track visibility events on pub * re-design * quickly re-enable * clean up * clean up
This commit is contained in:
@@ -27,6 +27,7 @@ class _ParticipantWidgetState extends State<ParticipantWidget> {
|
||||
//
|
||||
TrackPublication? firstVideoPub;
|
||||
TrackPublication? firstAudioPub;
|
||||
bool _visible = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -79,14 +80,17 @@ class _ParticipantWidgetState extends State<ParticipantWidget> {
|
||||
child: Stack(
|
||||
children: [
|
||||
// Video
|
||||
if (firstVideoPub?.subscribed == true &&
|
||||
firstVideoPub?.muted == false)
|
||||
VideoTrackRenderer(
|
||||
firstVideoPub!.track as VideoTrack,
|
||||
fit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
|
||||
)
|
||||
else
|
||||
const NoVideoWidget(),
|
||||
InkWell(
|
||||
onTap: () => setState(() => _visible = !_visible),
|
||||
child: (firstVideoPub?.subscribed == true &&
|
||||
firstVideoPub?.muted == false &&
|
||||
_visible)
|
||||
? VideoTrackRenderer(
|
||||
firstVideoPub!.track as VideoTrack,
|
||||
fit: RTCVideoViewObjectFit.RTCVideoViewObjectFitCover,
|
||||
)
|
||||
: const NoVideoWidget(),
|
||||
),
|
||||
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
|
||||
@@ -406,6 +406,13 @@ packages:
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
visibility_detector:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: visibility_detector
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.2.2"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -21,6 +21,9 @@ dependencies:
|
||||
|
||||
livekit_client:
|
||||
path: ../
|
||||
# git:
|
||||
# url: https://github.com/livekit/client-sdk-flutter
|
||||
# ref: main
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user