1、新建播放组件(预览图和文案可以删除也可以重新自定义,主要是视频地址)
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:midou_ee/car_video/page/car_video_page.dart';
import 'package:midou_ee/common/event_bus.dart';
import 'package:midou_ee/mall/mall_router.dart';
import 'package:midou_ee/routers/navigator_util.dart';
import 'package:midou_ee/utils/screen_util.dart';
import 'package:midou_ee/utils/toast.dart';
import 'package:midou_ee/widgets/load_image.dart';
import 'package:video_player/video_player.dart';
class CarShortVideo extends StatefulWidget {
final String url;
final String previewImageUrl; //预览图片的地址
final bool showProgressBar; //是否显示进度条
final bool showProgressText; //是否显示进度文本
final int positionTag;
final String title;
final int carId;
final int productId;
final int putawayForm;
const CarShortVideo(
this.url, {
Key key,
this.previewImageUrl: '',
this.showProgressBar: true,
this.showProgressText: true,
this.positionTag,
this.title,
this.carId,
this.productId,
this.putawayForm,
}) : super(key: key);
@override
_CarShortVideoState createState() => _CarShortVideoState();
}
class _CarShortVideoState extends State<CarShortVideo> {
VideoPlayerController _controller;
bool _hideActionButton = true;
bool videoPrepared = false; //视频是否初始化
double aspectRatio = 1;
Future _initializeVideoPlayerFuture;
@override
void initState() {
super.initState();
eventBus.on(EventVideoPlayPosition + widget.positionTag.toString(), (arg) {
setState(() {
if (arg == widget.positionTag) {
_controller.play();
videoPrepared = true;
} else {
_controller.pause();
}
});
});
_controller = VideoPlayerController.network(widget.url)
..setLooping(true).then((_) {
if (widget.positionTag == 0 && CarVideoPage.firstInitTimes == 1) {
CarVideoPage.firstInitTimes = 2;
_controller.play();
videoPrepared = true;
setState(() {});
}
});
_initializeVideoPlayerFuture = _controller.initialize();
}
@override
Widget build(BuildContext context) {
aspectRatio = _controller.value.aspectRatio;
return Stack(
children: <Widget>[
Container(
// padding: EdgeInsets.only(top: 20),
color: Color(0XFF333333),
// padding: EdgeInsets.all(20),
child: GestureDetector(
ch