Skip to content

Commit 6e1bad3

Browse files
duanduan
authored andcommitted
update.
1 parent 3e814ec commit 6e1bad3

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

example/lib/widgets/sound_waveform.dart

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import 'package:collection/collection.dart';
21
import 'package:flutter/material.dart';
3-
import 'package:flutter_webrtc/flutter_webrtc.dart';
42
import 'package:livekit_client/livekit_client.dart';
5-
import 'package:livekit_example/theme.dart';
63

74
class SoundWaveformWidget extends StatefulWidget {
85
final int count;
@@ -27,25 +24,23 @@ class SoundWaveformWidget extends StatefulWidget {
2724
class _SoundWaveformWidgetState extends State<SoundWaveformWidget>
2825
with TickerProviderStateMixin {
2926
late AnimationController controller;
30-
List<double> samples = [0,0,0,0,0,0,0];
31-
EventsListener<TrackEvent>? _listener;
27+
List<double> samples = [0, 0, 0, 0, 0, 0, 0];
28+
EventsListener<TrackEvent>? _listener;
3229

3330
void _startVisualizer(AudioTrack track) async {
34-
await widget.audioTrack.startVisualizer();
35-
_listener?.dispose();
31+
await _listener?.dispose();
3632
_listener = track.createListener();
3733
_listener?.on<AudioVisualizerEvent>((e) {
38-
if(mounted) {
34+
if (mounted) {
3935
setState(() {
40-
samples = e.event.map((e) => ((e as num) * 100).toDouble()).toList();
36+
samples = e.event.map((e) => ((e as num) * 100).toDouble()).toList();
4137
});
4238
}
4339
});
4440
}
4541

4642
void _stopVisualizer(AudioTrack track) async {
47-
await widget.audioTrack.stopVisualizer();
48-
_listener?.dispose();
43+
await _listener?.dispose();
4944
}
5045

5146
@override
@@ -105,4 +100,4 @@ class _SoundWaveformWidgetState extends State<SoundWaveformWidget>
105100
},
106101
);
107102
}
108-
}
103+
}

lib/src/track/local/local.dart

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,26 @@ mixin VideoTrack on Track {
6060

6161
/// Used to group [LocalAudioTrack] and [RemoteAudioTrack].
6262
mixin AudioTrack on Track {
63-
64-
EventChannel? _eventChannel ;
63+
EventChannel? _eventChannel;
6564
StreamSubscription? _streamSubscription;
6665

66+
@override
67+
Future<void> onStarted() => startVisualizer();
68+
69+
@override
70+
Future<void> onStopped() => stopVisualizer();
71+
6772
Future<void> startVisualizer() async {
68-
if(_eventChannel != null) {
73+
if (_eventChannel != null) {
6974
return;
7075
}
7176

7277
await Native.startVisualizer(mediaStreamTrack.id!);
7378

74-
_eventChannel = EventChannel('io.livekit.audio.visualizer/eventChannel-${mediaStreamTrack.id}');
75-
_streamSubscription = _eventChannel?.receiveBroadcastStream().listen((event) {
79+
_eventChannel = EventChannel(
80+
'io.livekit.audio.visualizer/eventChannel-${mediaStreamTrack.id}');
81+
_streamSubscription =
82+
_eventChannel?.receiveBroadcastStream().listen((event) {
7683
//logger.fine('[$objectId] visualizer event(${event})');
7784
events.emit(AudioVisualizerEvent(
7885
track: this,
@@ -82,7 +89,7 @@ mixin AudioTrack on Track {
8289
}
8390

8491
Future<void> stopVisualizer() async {
85-
if(_eventChannel == null) {
92+
if (_eventChannel == null) {
8693
return;
8794
}
8895
await Native.stopVisualizer(mediaStreamTrack.id!);

lib/src/track/track.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,11 @@ abstract class Track extends DisposableChangeNotifier
107107
}
108108

109109
logger.fine('$objectId.start()');
110-
110+
111111
startMonitor();
112112

113+
await onStarted();
114+
113115
_active = true;
114116
return true;
115117
}
@@ -125,6 +127,8 @@ abstract class Track extends DisposableChangeNotifier
125127

126128
stopMonitor();
127129

130+
await onStopped();
131+
128132
logger.fine('$objectId.stop()');
129133

130134
_active = false;
@@ -161,6 +165,12 @@ abstract class Track extends DisposableChangeNotifier
161165
@internal
162166
Future<bool> monitorStats();
163167

168+
@internal
169+
Future<void> onStarted() async {}
170+
171+
@internal
172+
Future<void> onStopped() async {}
173+
164174
@internal
165175
void startMonitor() {
166176
_monitorTimer ??= Timer.periodic(

0 commit comments

Comments
 (0)