|
@@ -44,12 +44,16 @@ class VidPlayerController extends ChangeNotifier implements IPlayerController {
|
|
|
VidPlayStatus _status = VidPlayStatus.init;
|
|
|
int _frameIndex = -1;
|
|
|
VidUsImage? _frame;
|
|
|
+ bool _disposed = false;
|
|
|
|
|
|
///该图像是否需要获取测量项和注释项
|
|
|
bool ifNeedInit = true;
|
|
|
|
|
|
final Map<Type, VidFrameProcessor> _processors = {};
|
|
|
|
|
|
+ @override
|
|
|
+ bool get disposed => _disposed;
|
|
|
+
|
|
|
/// Current play speed
|
|
|
double get currentSpeed => _speed;
|
|
|
|
|
@@ -248,10 +252,16 @@ class VidPlayerController extends ChangeNotifier implements IPlayerController {
|
|
|
}
|
|
|
|
|
|
Future<void> _handleUpdateFrame() async {
|
|
|
+ if (_disposed) return;
|
|
|
+
|
|
|
_frame = await _dataHost.getFrame(
|
|
|
currentFrameIndex,
|
|
|
processors: _processors.values.toList(),
|
|
|
);
|
|
|
+ emitFrameUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+ void emitFrameUpdate() {
|
|
|
if (ifNeedInit) {
|
|
|
currentFrameHandler.emit(this, _frame!);
|
|
|
ifNeedInit = false;
|
|
@@ -286,6 +296,7 @@ class VidPlayerController extends ChangeNotifier implements IPlayerController {
|
|
|
|
|
|
@override
|
|
|
void dispose() {
|
|
|
+ _disposed = true;
|
|
|
_stop(needNotify: false);
|
|
|
eventHandler.dispose();
|
|
|
super.dispose();
|