flutter VideoPlayer适配:保持视频的原始宽高比,缩放视频使它完全覆盖父容器
需求:视频充满整个长方形容器不能有黑边;视频不能拉伸变形;视频可以显示不全。
当播放器放置在列表中时,它固定了宽度及高度是一个width : height 为16:9的横向长方形。
情况1:不使用AspectRatio设置横纵比例,它会默认充满整个父容器,用户上传横屏视频比例相差不大显示较为正常,当用户上传竖屏视频时会横向拉伸显示变形。
情况2:使用AspectRatio设置横纵比例,当用户上传竖屏视频时会在中间显示,左右两边出现大片空白区域。
适配:使用FittedBox设置BoxFit.cover使子控件等比占据父容器,再使用SizedBox.expand尽量大的填充父布局,最后ClipRRect裁剪掉超出Container容器的部分。此时
视频播放器适配代码:
import 'package:atui/jade/configs/PathConfig.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';class TestVideo extends StatefulWidget{ State<StatefulWidget> createState() {// TODO: implement createStatereturn _TestVideo();}
}class _TestVideo extends State<TestVideo>{VideoPlayerController _controller;Future<void> _initializeVideoPlayerFuture;double aspectRadio = 16.0 / 9.0;double _sizeWidth = 0.0;double _sizeHeight = 0.0;void initState(