flutter切换源无法加载的问题

122 阅读1分钟

flutter切换源无法加载的问题 www.5axxw.com/questions/c…

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

class VideoPlayerPage extends StatefulWidget {
  @override
  _VideoPlayerPageState createState() => _VideoPlayerPageState();
}

class _VideoPlayerPageState extends State<VideoPlayerPage> {
  List<String> videoUrls = [
    'https://media.w3.org/2010/05/sintel/trailer.mp4',
    'http://www.w3school.com.cn/i/movie.mp4',
    'http://vjs.zencdn.net/v/oceans.mp4',

  ];
  int currentVideoIndex = 0;
  late VideoPlayerController _controller;

  bool _controllerInitialized = false;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(videoUrls[currentVideoIndex])
      ..initialize().then((_) {
        _controller.play();
        setState(() {
          _controllerInitialized = true;
        });
      });

  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  void switchVideo() {
    setState(() {
      _controllerInitialized = false;
    });
    setState(() {
      currentVideoIndex = (currentVideoIndex + 1) % videoUrls.length;
      _controller = VideoPlayerController.network(videoUrls[currentVideoIndex])
        ..initialize().then((_) {
          setState(() {
            _controllerInitialized = true;
          });
          _controller.play();
        });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Video Player'),
      ),
      body: Center(
        child: _controllerInitialized
            ? AspectRatio(
          aspectRatio: _controller.value.aspectRatio,
          child: VideoPlayer(_controller),
        )
            : CircularProgressIndicator(),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: switchVideo,
        child: Icon(Icons.switch_video),
      ),
    );
  }
}