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),
),
);
}
}