Skip to content

Got app crash after dispose is called from a widget which contains youtube_player plugin #30238

@goldenhuang

Description

@goldenhuang

Steps to Reproduce

  1. Use the latest version, say 3.1.1+3, of youtube_player plugin and apply it to one screen widget which is navigated from another screen widget.
  2. The player can work on that screen widget but after trying to navigate to previous page and so its dispose method will be called, this causes app crash and gets some error messages from debug output.
  3. If I roll back to old version, say 1.0.0, of youtube_player plugin, it can play, too. But the issue I mentioned at (2) is gone!!
  4. I was trying to add videoPlayerController.dispose() in dispose method but got more errors!! It seems that I need to do something more before leaving the widget.
  5. The major differences between 3.1.1+3 and 1.1 are 'context' property and 'videoPlayerController'.

Any idea of how I can handle this in the latest version?

Error Logs

logs
E/flutter (14986): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: A VideoPlayerController was used after being disposed.
E/flutter (14986): Once you have called dispose() on a VideoPlayerController, it can no longer be used.
E/flutter (14986): #0      ChangeNotifier._debugAssertNotDisposed.<anonymous closure> (package:flutter/src/foundation/change_notifier.dart:105:9)
E/flutter (14986): #1      ChangeNotifier._debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:111:6)
E/flutter (14986): #2      ChangeNotifier.dispose (package:flutter/src/foundation/change_notifier.dart:178:12)
E/flutter (14986): #3      VideoPlayerController.dispose (package:youtube_player/youtube_player.dart:327:11)
E/flutter (14986): <asynchronous suspension>
E/flutter (14986): #4      VideoPlayerScreenState.deactivate (package:funtour7777/src/components/Screens/VideoPlayerScreen.dart:363:27)
E/flutter (14986): #5      StatefulElement.deactivate (package:flutter/src/widgets/framework.dart:3914:12)
E/flutter (14986): #6      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1714:13)
E/flutter (14986): #7      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #8      _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #9      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #10     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #11     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #12     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #13     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #14     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #15     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #16     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #17     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #18     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #19     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #20     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #21     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #22     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #23     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #24     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #25     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #26     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #27     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #28     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #29     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #30     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #31     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #32     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #33     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
E/flutter (14986): #34     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #35     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
E/flutter (14986): #36     _InactiveElements._deactivateRecursively (package:flutter/src/widgets/framework.dart:1716:13)
E/flutter (14986): #37     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dar
I/flutter (14986): MediaTab: => didUpdateWidget
I/flutter (14986): VideoBrowserTab: => build
D/PhoneWindow(14986): windowLightStatusBar : false, disable View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
I/Adreno  (14986): DequeueBuffer: dequeueBuffer failed
I/Adreno  (14986): DequeueBuffer: dequeueBuffer failed
I/Adreno  (14986): DequeueBuffer: dequeueBuffer failed
W/OpenGLRenderer(14986): swapBuffers encountered EGL error 12301 on 0x722b7fe600, halting rendering...
I/flutter (14986): MediaTab: => didUpdateWidget
I/flutter (14986): VideoBrowserTab: => build
I/flutter (14986): #123    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
I/flutter (14986): #124    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #125    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #126    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #127    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #128    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #129    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
I/flutter (14986): #130    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #131    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #132    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #133    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #134    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #135    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #136    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #137    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #138    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:4869:14)
I/flutter (14986): #139    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #140    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #141    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #142    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #143    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #144    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #145    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #146    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1694:7)
I/flutter (14986): #147    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3775:14)
I/flutter (14986): #148    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1692:13)
I/flutter (14986): #149    ListIterable.forEach (dart:_internal/iterable.dart:39:13)
I/flutter (14986): #150    _InactiveElements._unmountAll (package:flutter/src/widgets/framework.dart:1705:25)
I/flutter (14986): #151    BuildOwner.finalizeTree.<anonymous closure> (package:flutter/src/widgets/framework.dart:2363:27)
I/flutter (14986): #152    BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2195:15)
I/flutter (14986): #153    BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:2362:7)
I/flutter (14986): #154    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:702:18)
I/flutter (14986): #155    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:275:5)
I/flutter (14986): #156    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter (14986): #157    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter (14986): #158    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter (14986): #162    _invoke (dart:ui/hooks.dart:209:10)
I/flutter (14986): #163    _drawFrame (dart:ui/hooks.dart:168:3)
I/flutter (14986): (elided 5 frames from class _AssertionError and package dart:async)
I/flutter (14986): 
I/flutter (14986): The VideoPlayerController sending notification was:
I/flutter (14986):   VideoPlayerController#6bf5d(VideoPlayerValue(duration: 0:05:15.114000, size: Size(1280.0, 720.0),
I/flutter (14986):   position: 0:00:00.000000, buffered: [], isPlaying: false, isLooping: false, isBuffering:
I/flutter (14986):   falsevolume: 0.0, errorDescription: null))

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: platform-viewsEmbedding Android/iOS views in Flutter appsc: crashStack traces logged to the consolep: mapsGoogle Maps pluginpackageflutter/packages repository. See also p: labels.r: timeoutIssue is closed due to author not providing the requested details in time

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions