国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flutter video_player點擊重新播放

這篇具有很好參考價值的文章主要介紹了Flutter video_player點擊重新播放。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

視頻播放完成之后,暫停視頻,點擊重新播放

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

class ListViewItemWidget extends StatefulWidget{

  
  State createState() {
    return _ListViewItemWidgetState();
  }
}

class _ListViewItemWidgetState extends State<ListViewItemWidget>{

  bool isPlay = false;
  bool isOver = false;
  late VideoPlayerController _controller;

  
  void initState() {
    _controller =  VideoPlayerController.network('https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4')
        ..initialize().then((_){
          _controller.play();
          setState(() {
            _controller.pause();
          });
        })
        ..addListener(videoListener);
  }

  
  void dispose() {
    _controller.dispose();
    _controller.removeListener(videoListener);
    super.dispose();
  }

  void videoListener(){
    var curPlayPosition = _controller.value.position;
    var totalPlayTime = _controller.value.duration;
    if (curPlayPosition == totalPlayTime && curPlayPosition.toString() != "0:00:00.000000"){
      isOver = true;
      isPlay = false;
      _controller.initialize()
        ..then((_) {
          setState(() {

          });
        });

      setState(() {

      });
    }
  }

  
  Widget build(BuildContext context) {
    return Column(
      children: [
        //未關(guān)注的才會顯示為你推薦
        Row(
          children: [
            Container(
              width: MediaQuery.of(context).size.width - 50,
              height: 50,
              alignment: Alignment.centerLeft,
              padding: const EdgeInsets.only(left: 12.0),
              child: Text("為你推薦"),
            ),
            SizedBox(
              width: 50,
              height: 50,
              child: InkWell(
                child: Icon(Icons.close),
                onTap: (){
                  /**
                   * 關(guān)閉
                   */
                },
              ),
            )
          ],
        ),

        Stack(
          children: [
            Container(
              height: 220,
              color: Colors.blueGrey,
              margin: EdgeInsets.only(top: 10),
              child: Stack(
                children: [
                  Positioned.fill(child: GestureDetector(
                      child: AspectRatio(
                        child: VideoPlayer(_controller),
                        aspectRatio: _controller.value.aspectRatio,
                      )),
                  ),
                  Container(
                    height: 40,
                    child: Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        /**
                         * 網(wǎng)絡(luò)圖片
                         */
                        // Image(image: Image.network(""))
                        Expanded(
                            flex: 1,
                            child:Icon(Icons.verified_user, color: Colors.white)
                        ),
                        Expanded(
                          flex: 6,
                          child:Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              Text("userName", style: TextStyle(fontSize: 18, color: Colors.white),),
                              Text("userName", style: TextStyle(fontSize: 12, color: Colors.white),)
                            ],
                          ),
                        ),
                        Expanded(
                            flex: 1,
                            child: Text("關(guān)注",  style: TextStyle(fontSize: 12, color: Colors.white))
                        ),
                        Expanded(
                            flex: 1,
                            child:   Icon(Icons.menu, color: Colors.white)
                        )
                      ],
                    ),
                  ),
                  buildControllerWidget()
                ],
              ),

            ),
          ],
        ),

        Container(
          margin: EdgeInsets.only(top: 10),
          child: Row(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              /**
               * 網(wǎng)絡(luò)圖片
               */
              // Image(image: Image.network(""))

              Expanded(
                  flex: 1,
                  child:Icon(Icons.favorite_border)
              ),
              Expanded(
                  flex: 1,
                  child:Icon(Icons.messenger_outline)
              ),
              Expanded(
                  flex: 1,
                  child:Icon(Icons.share_outlined)
              ),
              Expanded(
                flex: 4,
                child:Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                  ],
                ),
              ),
              Expanded(
                  flex: 1,
                  child:   Icon(Icons.collections_outlined)
              )
            ],
          ),
        ),
        Container(
          alignment: Alignment.centerLeft,
          padding: EdgeInsets.only(left: 18,top: 20),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text("1732贊"),
              Text("hahhahah"),
              Text("總共23條評論"),
              Text("6天前")
            ],
          ),
        )
      ],
    );
  }

  //播放界面
  Widget buildControllerWidget(){
    if(isPlay){
      return Container(
        child: GestureDetector(
          onTap: (){
            _controller.pause();
            isPlay = false;
            setState(() {
            });
          },
        ),
      );
    }
    return  Positioned.fill(child: AspectRatio(
        aspectRatio: _controller.value.aspectRatio,
        child: Container(
          child: GestureDetector(
            onTap: (){
              if(isOver){
                isOver = false;
                _controller.play();
                isPlay = true;
                setState(() {
                });
              } else {
                _controller.play();
                isPlay = true;
                setState(() {
                });
              }
            },
            child: Icon(Icons.play_circle_fill, size: 44,),
          ),
        )),
    );
  }
}



pubspec.yaml依賴

  video_player: ^2.3.0

要求Android compileSdkVersion 為33文章來源地址http://www.zghlxwxcb.cn/news/detail-630894.html

到了這里,關(guān)于Flutter video_player點擊重新播放的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Flutter 視頻video_player與緩存flutter_cache_manager

    參考官方DefaultCacheManager代碼,這里引入Config可以指定天數(shù)與最大個數(shù). 文件名 video_cache.dart 使用 await MyDefaultCacheManager().getSingleFile(url)) 即可

    2024年02月07日
    瀏覽(19)
  • Flutter:文件讀取—— video_player、chewie、image_picker、file_picker

    Flutter:文件讀取—— video_player、chewie、image_picker、file_picker

    簡單學習一下幾個比較好用的文件讀取庫 簡介 用于視頻播放 官方文檔 https://pub-web.flutter-io.cn/packages/video_player 安裝 加載網(wǎng)絡(luò)視頻 加載本地視頻 設(shè)置倍速和進度條 video_player 雖然是官方提供的插件,但是很明顯它只適合拿來簡單的播放視頻,就比如前端的 video 標簽功能也很

    2024年02月13日
    瀏覽(87)
  • Unity視頻播放之Video Player的簡單使用

    Unity視頻播放之Video Player的簡單使用

    使用Unity自帶的VideoPlayer來播放視頻 一、準備視頻 Unity3D常用視頻格式:.mov、.mpg、.mpeg、.mp4、.avi、.asf 如果都不識別,試試轉(zhuǎn)換成ogv格式。轉(zhuǎn)換完成之后,將視頻素材文件拖入Unity Assets 文件夾內(nèi)。 二、創(chuàng)建UI及添加組件 創(chuàng)建RenderTexture資源,設(shè)置分辨率,跟視頻分辨率一致

    2024年01月18日
    瀏覽(40)
  • Unity2020Video player發(fā)布后無法播放視頻問題

    我也是小白,用Unity過程中也是遇到很多草蛋問題,我在做demo的時候第一次用到Unity的video player,聽說ogv格式能直接播放,我就把視頻轉(zhuǎn)了ogv格式,然后放到clip里,編輯器里運行完全沒問題,發(fā)布打包后就播放不了,黑屏都沒有,直接視頻沒了,百度搜的絕對路徑說是放到

    2024年02月15日
    瀏覽(25)
  • 前端實現(xiàn)視頻播放功能----vue-video-player --save

    前端實現(xiàn)視頻播放功能----vue-video-player --save

    步驟一: npm安裝插件 : npm install vue-video-player --save 如果報錯 安裝具體版本 如下所示: npm install --save vue-video-player@4.0.6 ?如果package.json文件內(nèi)顯示則為安裝成功 步驟二: 局部引入---這里因為只有一個頁面需要所有采用的局部引入 在需要的頁面引入(這里注意路徑不要寫錯

    2024年02月10日
    瀏覽(28)
  • vue-video-player,springboot實現(xiàn)視頻分段下載播放

    vue-video-player,springboot實現(xiàn)視頻分段下載播放

    事情的起因是在博主把項目部署到服務(wù)器上后,發(fā)現(xiàn)由于視頻太大,加上服務(wù)器太垃圾,導(dǎo)致稍微大點的視頻加載很久才能播放(指十多分鐘…),然后就上網(wǎng)查找資料,看下咋實現(xiàn)。 這里涉及到有關(guān)http請求的知識“HTTP Header里的Range和Content-Range參數(shù),Range是在請求頭里 Ra

    2023年04月13日
    瀏覽(56)
  • 【vue】 vue 實現(xiàn)視頻播放 vue-video-player

    【vue】 vue 實現(xiàn)視頻播放 vue-video-player

    注:用來測試的在線視頻url地址 1.下載依賴 vue2 推薦下載指定版本依賴,不然可能下載不下來報錯。 2.全局注冊main.js 3.新建vue文件 下班`

    2024年02月16日
    瀏覽(25)
  • Unity播放帶Alpha通道的視頻【W(wǎng)ebM+Video Player】(替代播放GIF方案)

    Unity播放帶Alpha通道的視頻【W(wǎng)ebM+Video Player】(替代播放GIF方案)

    在Unity中播放GIF或者動態(tài)效果,可以通過Video Player播放帶透明通道的WebM視頻來實現(xiàn)。 制作帶Alpha的MOV視頻 制作帶Alpha通道的MOV視頻有多重方式,如AE、PR、PS等等,具體制作過程可以自行百度。 將MOV視頻格式轉(zhuǎn)化為WebM格式 將WebM格式導(dǎo)入Unity,設(shè)置視頻播放 完成動態(tài)效果展示

    2024年02月13日
    瀏覽(26)
  • Unity零基礎(chǔ)到進階 ??| 視頻播放器 Video Player組件 詳解

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包