Flutter 仿抖音效果 (一) 全屏點愛星

專注于為中小企業(yè)提供成都網站設計、網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)莒南免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯網行業(yè)人才,有力地推動了數千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。
Flutter 仿抖音效果 (二) 界面布局
[Flutter 仿抖音效果 (三) 視頻播放列表] ( )
項目地址: 持續(xù)效果更新
1.基本的布局是簡單的,外層通過Stack作為根
2.左邊點贊的控件組通過Align進行統(tǒng)一布局
3.頂部控件組通過Positioned進行布局,設置頂部距離,其實也可以用align,我們多使用幾種來習慣flutter的布局
4.底部同樣使用Positioned,設置底部距離
5.子頁面的左右滑動使用PageView,一開始我們要從推薦開始左滑到關注,可以使用reverse屬性,不需要更多額外的操作
1.pageController監(jiān)聽
刷新頂部的下劃線時,我們一樣使用StreamController刷新,這樣效率比setstate高很多
2.歌曲名走馬燈效果
這個效果看起來挺麻煩的其實實現起來超級的簡單用最普通的ListView就能快速的實現
首頁listview里面套入的是最簡單的container+text
listview添加一個ScrollController做為滑動的控制
使用一個定時器,把listview滑到最大的位置之后,在滑回去
先通過scroController.position.maxScrollExtent獲取最大位置,
然后通過scroController.animateTo進行滑動,因為我設置一次循環(huán)的時間是3000毫秒,所以滑過去和滑回來的時間各占一般 new Duration(milliseconds: (time * 0.5).toInt()),還有就是歌名沒有大于最大寬度時候其實我們不需要進行滑動,所以判斷maxScrollExtent是否大于0來確定是否進行滑動動畫
目前Flutter平臺主流的兩個播放器是video_player和fijkplayer
pub
github
1、Flutter平臺官方插件,作者是國外的,有問題溝通比較困難,只能通過提交issue
2、硬解碼
4、UI封裝: better_player
基于video_player和Chewie的高級視頻播放器。它解決了許多典型的用例,并且易于運行。
5、播放器寬高比例與視頻內容寬高比例不一致時,會出現圖像壓縮變形的問題
6、調用原生內核播放器:iOS--AVPlayer, Android--ExoPlayer
7、對于分段源 m3u8 的播放不友好,如果一個切片播放超時,會導致整個播放都失敗
8、better_player可以緩存視頻,但不能自定義緩存的地址,只能指定key,和緩存的最大內存量(還未研究超出最大的話是不能緩存新的,還是刪除最舊的)
9、better_player不能完全自定義UI,只能修改類中的一些開放屬性,比如說icon圖標,文字顏色啥的
10、無網絡有緩存時,封面可以正常展示
11、better_player播放失敗有手動retry的設計
pub
github
1、fijkplayer 是一個 Flutter 生態(tài)的媒體播放器,是對 ijkplayer 的 Flutter 封裝,支持 Android 和 iOS。 fijkplayer 使用 ijkplayer 作為播放器內核,ijkplayer 使用 ffmpeg 進行音視頻解封裝和解碼,同時添加了 Android 和 iOS 平臺特有的硬件加速解碼能力。
2 、國內有QQ群,但是活躍度也是不高。
3、可以緩存視頻,可以自定義緩存的地址,方便后續(xù)的內存維護。
4、可以通過FijkPanelWidgetBuilder較大程度上自定義UI。
5、無網絡有緩存視頻時,無法展示封面,因為內部是通過imageProvider去加載網絡圖片的。
7、播放失敗無手動retry的設計
1、兩種播放器都是通過外接紋理方案 (Texture),將播放器視頻畫面渲染接入 flutter 中,性能上優(yōu)于 PlatformView 的接入方法。
如何自己實現?
下面以video_palyer的iOS源碼部分解釋:
iOS用CVPixelBufferRef將渲染出來的數據存在內存中,Flutter engine會將Texture的數據在內存中直接進行映射無需通過Channel傳輸,然后Texture Widget就可以把你提供的這些數據顯示出來。在我們傳輸數據的時候會需要將其與 TextureID 綁定,綁定的過程通過BasicMessageChannel實現數據流的傳輸,以做到實時展示的效果
在本博客中,我們將探討Flutter中的堆疊式卡輪播。 我們還將實現一個演示程序,并學習在您的flutter應用程序中使用 stacked_card_carousel 包創(chuàng)建一個帶有垂直輪播的堆疊卡。
用于創(chuàng)建帶有堆疊卡片的垂直輪播的小部件。 下面的演示視頻顯示了如何在Flutter中創(chuàng)建帶有垂直旋轉木馬的堆疊卡。 它顯示了在您的flutter應用程序中如何使用stacked_card_carousel軟件包來使用堆疊式卡輪播。 它顯示了垂直圓盤傳送帶滑動卡的列表,所有卡向上滑動并堆疊,稱為堆疊式卡傳送帶。 它會顯示在您的設備上。
堆疊式卡輪播的一些屬性是:
在lib文件夾中創(chuàng)建一個名為style_card.dart的新dart文件。
首先,我們創(chuàng)建StyleCard類,將在后續(xù)的DEMO中調用它
我們將制作一個 card 控件. 在card控件中, 我們加入一個elevation 屬性和一個column控件。 在column中, 我們加入一個container用于包含image, title 和 description. 然后在stacked_card_demo頁面中使用它。
在lib文件夾中創(chuàng)建一個新的名為stacked_card_demo.dart的dart文件。
現在,我們將創(chuàng)建一個styleCards列表,并在其中添加一個StyleCard類。
我們創(chuàng)建了八個卡片控件,并在其中添加了image,title和description。 程序運行后,我們將看到一個卡片列表, 當用戶向上滑動時,所有卡片都將堆疊在一起; 當用戶向下滑動時,卡片都將回到原始位置;
效果如下:
Demo地址:
名稱欄目:flutter卡包效果,flutter特效
URL鏈接:http://chinadenli.net/article24/dsipdje.html
成都網站建設公司_創(chuàng)新互聯,為您提供面包屑導航、、靜態(tài)網站、軟件開發(fā)、網站策劃、電子商務
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯