1

In my app I have a video running in the background. I have a parameter page with a filepicker button which saves the path of the selected video in sharedpreferences

Future<File> _pickVideo() async {
final result = await FilePicker.platform.pickFiles(type: FileType.video);

File file = File(result!.files.single.path ?? '');
if (file != null) {
  setState(() {
    pickedVideo = file;
    print('video $pickedVideo');
  });
}
return file;}

In the video player page i retrieve the sharedpreferences path and I can display it in a Text widget

Text(selectedVideoValue ?? '',)

when I want to use it in the video player it doesn't work. am i doing something wrong?

String? selectedVideoValue;

if (selectedVideoValue != null) {
  controller = VideoPlayerController.file(File('{$selectedVideoValue}'))
    ..addListener(() => setState(() {}))
    ..initialize().then((_) {
      controller.setVolume(0.0);
      controller.play();
      controller.setLooping(true);
      setState(() {});
    });
} else {
  controller =
      VideoPlayerController.asset("assets/movies/STYLEARCHIGRAPHIQUE.mp4")
        ..addListener(() => setState(() {}))
        ..initialize().then((_) {
          controller.setVolume(0.0);
          controller.play();
          controller.setLooping(true);
          setState(() {});
        });
}

Thanks for your help

1 Answers1

1

Below Code set into initState() may be working

  controller = VideoPlayerController.file(File('{$selectedVideoValue}'))
    ..addListener(() => setState(() {}))
    ..initialize().then((_) {
      controller.setVolume(0.0);
      controller.play();
      controller.setLooping(true);
      setState(() {});
    });
} else {
  controller =
      VideoPlayerController.asset("assets/movies/STYLEARCHIGRAPHIQUE.mp4")
        ..addListener(() => setState(() {}))
        ..initialize().then((_) {
          controller.setVolume(0.0);
          controller.play();
          controller.setLooping(true);
          setState(() {});
        });
}```