11import 'package:flutter/material.dart' ;
22import 'package:livekit_client/livekit_client.dart' ;
3+ import 'dart:async' ;
34
45enum StatsType {
56 kUnknown,
@@ -22,19 +23,19 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
2223 Map <String , Map <String , String >> stats = {'audio' : {}, 'video' : {}};
2324
2425 void _setUpListener (Track track) {
25- var listener = track.createListener ();
26+ final listener = track.createListener ();
2627 listeners.add (listener);
2728 if (track is LocalVideoTrack ) {
2829 statsType = StatsType .kLocalVideoSender;
2930 listener.on < VideoSenderStatsEvent > ((event) {
30- Map <String , String > stats = {};
31+ final stats = < String , String > {};
3132 setState (() {
3233 stats['tx' ] = 'total sent ${event .currentBitrate .toInt ()} kpbs' ;
3334 event.stats.forEach ((key, value) {
3435 stats['layer-$key ' ] =
3536 '${value .frameWidth ?? 0 }x${value .frameHeight ?? 0 } ${value .framesPerSecond ?.toDouble () ?? 0 } fps, ${event .bitrateForLayers [key ] ?? 0 } kbps' ;
3637 });
37- var firstStats = event.stats['f' ] ?? event.stats['h' ] ?? event.stats['q' ];
38+ final firstStats = event.stats['f' ] ?? event.stats['h' ] ?? event.stats['q' ];
3839 if (firstStats != null ) {
3940 stats['encoder' ] = firstStats.encoderImplementation ?? '' ;
4041 if (firstStats.mimeType != null ) {
@@ -50,7 +51,7 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
5051 } else if (track is RemoteVideoTrack ) {
5152 statsType = StatsType .kRemoteVideoReceiver;
5253 listener.on < VideoReceiverStatsEvent > ((event) {
53- Map <String , String > stats = {};
54+ final stats = < String , String > {};
5455 setState (() {
5556 if (! event.currentBitrate.isNaN) {
5657 stats['rx' ] = '${event .currentBitrate .toInt ()} kpbs' ;
@@ -75,7 +76,7 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
7576 } else if (track is LocalAudioTrack ) {
7677 statsType = StatsType .kLocalAudioSender;
7778 listener.on < AudioSenderStatsEvent > ((event) {
78- Map <String , String > stats = {};
79+ final stats = < String , String > {};
7980 setState (() {
8081 stats['tx' ] = '${event .currentBitrate .toInt ()} kpbs' ;
8182 if (event.stats.mimeType != null ) {
@@ -88,7 +89,7 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
8889 } else if (track is RemoteAudioTrack ) {
8990 statsType = StatsType .kRemoteAudioReceiver;
9091 listener.on < AudioReceiverStatsEvent > ((event) {
91- Map <String , String > stats = {};
92+ final stats = < String , String > {};
9293 setState (() {
9394 stats['rx' ] = '${event .currentBitrate .toInt ()} kpbs' ;
9495 if (event.stats.mimeType != null ) {
@@ -109,7 +110,7 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
109110
110111 _onParticipantChanged () {
111112 for (var element in listeners) {
112- element.dispose ();
113+ unawaited ( element.dispose () );
113114 }
114115 listeners.clear ();
115116 for (var track in [...widget.participant.videoTrackPublications, ...widget.participant.audioTrackPublications]) {
@@ -130,7 +131,7 @@ class _ParticipantStatsWidgetState extends State<ParticipantStatsWidget> {
130131 @override
131132 void deactivate () {
132133 for (var element in listeners) {
133- element.dispose ();
134+ unawaited ( element.dispose () );
134135 }
135136 widget.participant.removeListener (_onParticipantChanged);
136137 super .deactivate ();
0 commit comments