Repository: flutter
Issue: [video_player] StreamBuilder A VideoPlayerController was used after being disposed
Labels: p: video_player,package,team-ecosystem,has reproducible steps,P3,found in release: 2.2,found in release: 2.3,triaged-ecosystem

When using multiple VideoPlayerControllers (with StreamBuilders) disposing the controller throws an error when the widget is built despite being disposed correctly and only once.
I have linked a demo with an complete example.

## Steps to Reproduce
1. Clone demo repo: [crtl/flutter-bugs](https://github.com/crtl/flutter-bugs/)
2. Checkout branch `video_player/usedAfterDisposed`
3. Run app
4. Press the button
5. Despite calling dispose before initializing next controller an error is thrown.

**Expected results:**
Should work.

**Actual results:**
```
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building StreamBuilder<VideoPlayerController>(state:
_StreamBuilderBaseState<VideoPlayerController, AsyncSnapshot<VideoPlayerController>>#f93e0):
A VideoPlayerController was used after being disposed.
Once you have called dispose() on a VideoPlayerController, it can no longer be used.

The relevant error-causing widget was:
  StreamBuilder<VideoPlayerController>
  file:///D:/dev/projects/flutter/flutter-bugs/lib/main.dart:105:16

When the exception was thrown, this was the stack:
#0      ChangeNotifier._debugAssertNotDisposed.<anonymous closure> (package:flutter/src/foundation/change_notifier.dart:108:9)
#1      ChangeNotifier._debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:114:6)
#2      ChangeNotifier.removeListener (package:flutter/src/foundation/change_notifier.dart:169:12)
#3      _VideoPlayerState.didUpdateWidget (package:video_player/video_player.dart:537:26)
#4      StatefulElement.update (package:flutter/src/widgets/framework.dart:4734:58)
#5      Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#6      SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5881:14)
#7      Element.updateChild (package:flutter/src/widgets/framework.dart:3245:15)
#8      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4571:16)
#9      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#10     Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#11     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:33)
#12     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:866:20)
#13     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
#14     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1115:15)
#15     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1054:9)
#16     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:970:5)
#20     _invoke (dart:ui/hooks.dart:267:10)
#21     _drawFrame (dart:ui/hooks.dart:225:3)
(elided 3 frames from dart:async)
```

<details>
  <summary>Logs</summary>

<!--
      Run your application with `flutter run --verbose` and attach all the
      log output below between the lines with the backticks. If there is an
      exception, please see if the error message includes enough information
      to explain how to solve the issue.
-->

```
[√] Flutter (Channel master, 1.20.0-1.0.pre.30, on Microsoft Windows [Version 10.0.18362.900], locale de-DE)
    • Flutter version 1.20.0-1.0.pre.30 at D:\dev\flutter
    • Framework revision e96b13c72f (5 days ago), 2020-06-12 09:02:19 -0700
    • Engine revision 965fbbed17
    • Dart version 2.9.0 (build 2.9.0-14.0.dev 2b917f5b6a)


[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at D:\dev\android\sdk
    • Platform android-29, build-tools 29.0.2
    • ANDROID_HOME = D:\dev\android\sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

```


</details>