Flutter 视频缩略图

在做即时通讯前整理了一个视频缩略图的工具类,可供码农直接放入项目中使用,涉及到的插件:

video_player: ^0.10.11+2

话不多说代码如下:

import 'package:flutter/material.dart';
import 'package:spanners/cTools/vedioPalyer.dart';
import 'package:video_player/video_player.dart';

class AddVideoFirstImage extends StatefulWidget {
 final String videoUrl;

const AddVideoFirstImage({Key key, this.videoUrl}) : super(key: key);
 @override
 _AddVideoFirstImageState createState() => _AddVideoFirstImageState();
 }

class _AddVideoFirstImageState extends State<AddVideoFirstImage> {
 //视频 缩略图
VideoPlayerController _controller;
Future _initializeVideoPlayerFuture;
@override
Widget build(BuildContext context) {
@override
void initState() {
  // TODO: implement initState
  setState(() {
    //视频缩略图
    _controller =
        VideoPlayerController.network(widget.videoUrl); //网络视频,也可以是file
    _controller.setLooping(true);
    _initializeVideoPlayerFuture = _controller.initialize();
  });
  super.initState();
}

return Stack(
  children: [
    Padding(
      padding: EdgeInsets.all(0),
      child: ConstrainedBox(
        constraints: BoxConstraints.expand(),
        child: FutureBuilder(
          //显示缩略图
          future: _initializeVideoPlayerFuture,
          builder: (context, snapshot) {
            print(snapshot.connectionState);
            if (snapshot.hasError) print(snapshot.error);
            if (snapshot.connectionState == ConnectionState.done) {
              return AspectRatio(
                aspectRatio: 2 / 3,
//                      aspectRatio: _controller.value.aspectRatio,
                child: VideoPlayer(_controller),
              );
            } else {
              return Center(
                child: CircularProgressIndicator(),
              );
            }
          },
        ),
      ),
    ),
    /* 播放 按钮所在位置 大小 可根据实际项目 需要 调整 */
    Padding(
        padding: EdgeInsets.fromLTRB(
            MediaQuery.of(context).size.width / 2 - 30 / 2 - 20,
            151 / 2 - 20,
            MediaQuery.of(context).size.width / 2 - 30 / 2 - 20,
            151 / 2 - 20),
        child: InkWell(
          onTap: () {
            /*  视频上传成功后 点击播放视频  */
            Navigator.push(
                context,
                new MaterialPageRoute(
                    builder: (context) => new videoPalyer(
                          url: widget.videoUrl,
                        )));
          },
          child: Container(
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(20),
            ),
            child: Icon(
              Icons.play_arrow,
              color: Colors.white,
              size: 40,
            ),
          ),
        )),
  ],
);
 }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,685评论 1 180
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,561评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,865评论 4 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,609评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,769评论 1 1