video: fixed subtitle remaining after deselecting track

This commit is contained in:
Thibault Deckers 2021-07-03 11:03:40 +09:00
parent de573fa629
commit 6795717fe1

View file

@ -20,6 +20,7 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
late FijkPlayer _instance;
final List<StreamSubscription> _subscriptions = [];
final StreamController<FijkValue> _valueStreamController = StreamController.broadcast();
final StreamController<String?> _timedTextStreamController = StreamController.broadcast();
final AChangeNotifier _completedNotifier = AChangeNotifier();
Offset _macroBlockCrop = Offset.zero;
final List<StreamSummary> _streams = [];
@ -66,7 +67,6 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
(value) => canSetSpeedNotifier.value = true,
onError: (error) {},
);
_startListening();
}
@ -75,12 +75,14 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
_initialPlayTimer?.cancel();
_stopListening();
await _valueStreamController.close();
await _timedTextStreamController.close();
await _instance.release();
}
void _startListening() {
_instance.addListener(_onValueChanged);
_subscriptions.add(_valueStream.where((value) => value.state == FijkState.completed).listen((_) => _completedNotifier.notifyListeners()));
_subscriptions.add(_instance.onTimedText.listen(_timedTextStreamController.add));
}
void _stopListening() {
@ -295,7 +297,7 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
Stream<int> get positionStream => _instance.onCurrentPosUpdate.map((pos) => pos.inMilliseconds);
@override
Stream<String?> get timedTextStream => _instance.onTimedText;
Stream<String?> get timedTextStream => _timedTextStreamController.stream;
@override
double get speed => _speed;
@ -327,6 +329,9 @@ class IjkPlayerAvesVideoController extends AvesVideoController {
} else if (current != null) {
await _instance.deselectTrack(current.index!);
}
if (type == StreamType.text) {
_timedTextStreamController.add(null);
}
await seekTo(currentPosition);
}
}