【问题标题】:Is there a way to check whether a VideoPlayerController from the Flutter video-player package is already disposed?有没有办法检查 Flutter 视频播放器包中的 VideoPlayerController 是否已经被释放?
【发布时间】:2021-07-04 19:38:45
【问题描述】:

在我的代码中,我现在不再需要VideoPlayerController,但我不确定VideoPlayerController 是否已经被处置。目前,我调用了dispose() 方法,但是当VideoPlayerController 已经被释放时会抛出错误:

2021-04-08 23:35:07.602 1898-2090/com.learningleaflets.anatomyleaflet E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: A VideoPlayerController was used after being disposed.
    Once you have called dispose() on a VideoPlayerController, it can no longer be used.
    #0      ChangeNotifier._debugAssertNotDisposed.<anonymous closure> (package:flutter/src/foundation/change_notifier.dart:117:9)
    #1      ChangeNotifier._debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:123:6)
    #2      ChangeNotifier.dispose (package:flutter/src/foundation/change_notifier.dart:212:12)
    #3      VideoPlayerController.dispose (package:video_player/video_player.dart:383:11)
    <asynchronous suspension>

我不希望该错误填满我的日志,那么有没有办法检查 VideoPlayerController 是否已经准备好避免在其上调用 dispose()

【问题讨论】:

  • 我不认为这是显示错误的原因。该错误表示您在处理后尝试使用VideoPlayerController。如果多个视频使用同一个控制器,也可能会错误地完成。您在第一个视频中处理它,然后尝试使用相同的播放第二个视频,然后抛出此错误。

标签: flutter video-player flutter-video-player


【解决方案1】:

使用 try-catch 块

try{
_videoController.dispose();
//Do something
}
catch(e){
//Do something
}

【讨论】:

  • 在catch中应该怎么做?
  • 取决于您的用例。如果您使用它,则不会根据您的问题的要求填写您的日志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2013-11-07
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
相关资源
最近更新 更多