import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class VideoAuto extends StatefulWidget {
const VideoAuto({Key? key}) : super(key: key);
@override
State<VideoAuto> createState() => _VideoAutoState();
}
class _VideoAutoState extends State<VideoAuto> {
VideoPlayerController? videoPlayerController;
// 是否初始化完成
bool finish = false;
// 当前下标
int activeIndex = 0;
int index = 0;
List list = [
"https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_pinned.mp4",
"https://live-s3m.mediav.com/nativevideo/ce3b4d62ac09a8cf96b5bceb959052a4.mp4",
"https://live-s3m.mediav.com/nativevideo/6e87b2d4b9a1c73c0987e34c89f6f008.mp4",
];
var ss;
@override
void initState() {
super.initState();
init();
// 监听视频是否播放完成
listen();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("视频自动轮播"),
),
body: body(),
);
}
@override
void dispose() {
super.dispose();
videoPlayerController?.removeListener(() {});
videoPlayerController?.dispose();
}
// 初始化
init() {
if (mounted) {
setState(() {
finish = false;
});
}
videoPlayerController = VideoPlayerController.network(list[activeIndex])
..initialize().then((value) {
if (mounted) {
setState(() {
finish = true;
});
}
});
videoPlayerController?.play();
}
// 监听视频是否播放完成
listen() {
videoPlayerController?.addListener(() {
if (videoPlayerController!.value.duration ==
videoPlayerController!.value.position &&
videoPlayerController!.value.isInitialized) {
videoPlayerController?.dispose();
if (activeIndex == list.length - 1) {
activeIndex = 0;
} else {
activeIndex++;
}
// 初始化进度条
if (index != 0) {
init();
listen();
}
}
index++;
});
}
// 内容体
body() {
return Column(
children: [
Container(
child: AspectRatio(
aspectRatio: videoPlayerController == null
? 1
: videoPlayerController!.value.aspectRatio,
child: videoPlayerController == null
? Container(
color: Colors.pink,
)
: (finish
? VideoPlayer(videoPlayerController!)
: Container(
alignment: Alignment.center,
color: Colors.blue[100],
child: Text("正在加载"),
)),
),
)
],
);
}
}
flutter 自动播放下一个视频(自动轮播)
于 2023-01-04 14:58:33 首次发布