flutter video_player pageView 视频分页播放自适应视频宽高

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值