'How To Add Error Handling To Flutter When Running Chewie Video Player

can anyone explain why flutter will at times crash and open a new tab in your editor highlighting some prebuilt flutter code, an example being when I implement Chewie video player

class _UploadPlayerState extends State<UploadPlayer> {
 ChewieController? chewieController;
 final VideoPlayerController videoPlayerController =
    VideoPlayerController.network(
         "gs://tourme-7a61d.appspot.com/User_uploadVideo/videoplayback.mp4");
@override
void initState() {
videoPlayerController.initialize();
chewieController = ChewieController(
  videoPlayerController: videoPlayerController,
  aspectRatio: 16 / 9,
  autoPlay: true,
  looping: true,
  autoInitialize: true,
);
super.initState();
}
@override
void dispose() {
 videoPlayerController.dispose();
 chewieController!.dispose();
 super.dispose();
}

@override
Widget build(BuildContext context) {
 return Container(
   color: Colors.black,
   child: Center(child: Chewie(controller: chewieController!)),
  );
}

When I try and run this code in the android emulator flutter crashes and tabs to future_impl.dart in Vscode and highlights line 44 if (!future._mayComplete) throw new StateError("Future already completed"); This is a really strange issue flutter has, I can only think that it has something to do with the implementation of the package I'm using. I was able to get an output in the debug console which is

E/ExoPlayerImplInternal(14460): Playback error
E/ExoPlayerImplInternal(14460):   com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:640)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:612)
E/ExoPlayerImplInternal(14460):       at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(14460):       at android.os.Looper.loopOnce(Looper.java:201)
E/ExoPlayerImplInternal(14460):       at android.os.Looper.loop(Looper.java:288)
E/ExoPlayerImplInternal(14460):       at android.os.HandlerThread.run(HandlerThread.java:67)
E/ExoPlayerImplInternal(14460):   Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.MalformedURLException: unknown protocol: gs
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:365)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:258)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1009)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
E/ExoPlayerImplInternal(14460):       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
E/ExoPlayerImplInternal(14460):       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
E/ExoPlayerImplInternal(14460):       at java.lang.Thread.run(Thread.java:1012)
E/ExoPlayerImplInternal(14460):   Caused by: java.net.MalformedURLException: unknown protocol: gs
E/ExoPlayerImplInternal(14460):       at java.net.URL.<init>(URL.java:608)
E/ExoPlayerImplInternal(14460):       at java.net.URL.<init>(URL.java:498)
E/ExoPlayerImplInternal(14460):       at java.net.URL.<init>(URL.java:447)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:507)
E/ExoPlayerImplInternal(14460):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:359)
E/ExoPlayerImplInternal(14460):       ... 7 more


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source