欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter音頻插件,flutter 播放器插件

Flutter插件開(kāi)發(fā)

Flutter插件是Flutter調(diào)用原生能力的一種解構(gòu)方式。

十年的大豐網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整大豐建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“大豐網(wǎng)站設(shè)計(jì)”,“大豐網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Flutter 會(huì)通過(guò) MethodChannel 將數(shù)據(jù)傳遞給 iOS/ Android ,反之 iOS/ Android 也可以通過(guò) MethodChannel 將數(shù)據(jù)傳回給 Flutter。

在Flutter工程根目錄創(chuàng)建plugins目錄,在plugins目錄下執(zhí)行下面命令:

Flutter-Native

Native-Flutter

flutter 插件開(kāi)發(fā)

new flutter project,選擇Flutter Plugin,next,輸入插件名,包名,運(yùn)行平臺(tái)及編寫(xiě)語(yǔ)言,finish!

如上圖,筆者的插件名為log_plugin,選用Android,java語(yǔ)言開(kāi)發(fā)

在自動(dòng)打開(kāi)和插件名同名的dart文件,聲明要使用其他語(yǔ)言的方法,本例使用java 語(yǔ)言實(shí)現(xiàn)Android原生的log輸出

編輯 android/src/main/java/com/whh/log_plugin/LogPlugin.java

在onMethodCall方法中,區(qū)別聲明方法名,以實(shí)現(xiàn)該方法邏輯

至此,簡(jiǎn)單的插件開(kāi)發(fā)完成,接下來(lái)測(cè)試

example是插件測(cè)試工程,打開(kāi)其中的main.dart

打開(kāi)已有的或者新建一個(gè)flutter app project,在其pubspec.yaml引入插件

使用pub get 關(guān)聯(lián)到插件

詳見(jiàn)官網(wǎng)文檔

此文為 flutter 初學(xué)者記錄學(xué)習(xí)過(guò)程,附上 github ,小小分享~

每天進(jìn)步一點(diǎn)點(diǎn)。。。(2021-08-10)

Flutter插件匯總,總有一個(gè)用得著, 已收錄:100+

? ? 盡可能收集好用的插件以便更快的開(kāi)發(fā)效率,85%親測(cè),持續(xù)添加中

如果有好的插件或者建議,可以直接評(píng)論 ??

Github地址:

文章源地址:

br /

???????? 盡可能收集好用的插件以便更效率的開(kāi)發(fā),85%親測(cè),持續(xù)添加中

br /

br /

如果有好的插件或者建議,可直接提Issue 感謝您的分享 ~ ??

br /

br /

掘金文章地址:

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

Flutter視頻播放器,簡(jiǎn)潔!

注:亮度調(diào)節(jié)和音量調(diào)節(jié)gif無(wú)法體現(xiàn),功能是ok的,其次默認(rèn)Icon鎖的close和open實(shí)在難以分辨。

環(huán)境:Flutter 2.8.1 channel stable ;Dart 2.15.1

需要音頻播放器的看這里: Flutter音樂(lè)播放器

重點(diǎn)說(shuō)下這個(gè)工具類,因?yàn)橐曨l播放,涉及到狀態(tài)改變有很多,筆者剛開(kāi)始選擇使用 InheritedWidget 來(lái)在眾多的widget之間共享數(shù)據(jù)。但是總感覺(jué)這樣有點(diǎn)繁瑣,且不很優(yōu)雅!

這里非廣告,如果是使用 GetX 就很簡(jiǎn)單了,筆者也使用了 GetX 進(jìn)行封裝了,一瀉千里的趕腳!,但是筆者還是那句話:剛開(kāi)始接觸Flutter的開(kāi)發(fā)者不是很建議使用 GetX ,可以先熟悉下Flutter狀態(tài)管理的基礎(chǔ)原理再行使用。而且為了盡量簡(jiǎn)潔,還是不引入其他的第三方了。

我們選擇對(duì)第三方插件進(jìn)行封裝的目的不外乎這幾個(gè):

于是筆者就寫(xiě)了一個(gè)工具類 VideoPlayerUtils ,專門且只用來(lái)處理播放器的所有業(yè)務(wù)。包括暫停、播放、跳轉(zhuǎn)、調(diào)節(jié)音量、調(diào)節(jié)亮度、切換視頻等操作。在所有的widget中不會(huì)引用關(guān)于 video_player 或其他第三方插件的任何信息, VideoPlayerUtils 負(fù)責(zé)widget與播放器之間的所有操作交互。后續(xù)優(yōu)化迭代或更換播放器插件時(shí),只需針對(duì)這個(gè)工具類進(jìn)行修改,對(duì)所有widget不會(huì)有任何的影響,大大的解耦合了。

其中 VideoPlayerState :

提供以上的公共屬性,可以通過(guò) VideoPlayerUtils 來(lái)獲取對(duì)應(yīng)的值,使用 get 只讀,使外界不會(huì)誤修改這些屬性,以保證數(shù)值的安全性。開(kāi)發(fā)者可根據(jù)自身需要自行添加屬性。

提供以上方法來(lái)處理播放器的所有業(yè)務(wù)。同樣的開(kāi)發(fā)者可根據(jù)自身需要自行添加或修改。

重點(diǎn)說(shuō)下這個(gè)方法,是整個(gè)業(yè)務(wù)的核心方法,控制視頻的播放或暫停。開(kāi)發(fā)者只要遇到播放或暫停是均可調(diào)用此方法,具體是播放或暫停,內(nèi)部根據(jù)傳入的 url 自行判斷,開(kāi)發(fā)者不需要關(guān)心。

切換新視頻也是使用此方法,傳入的 url 與上次不一致,自動(dòng)切換新視頻。筆者可根據(jù) statusListener 來(lái)監(jiān)聽(tīng)播放狀態(tài)的改變,以此處理自身邏輯。

這個(gè)也需要提下,視頻播放器在播放新視頻時(shí)會(huì)異步初始化,一般我們的操作是在 initState() 初始化,成功后再 setState() 。這里筆者遇到一個(gè)讓人蛋疼的問(wèn)題:

我們看 video_player 的使用:

VideoPlayer(controller) :widget中已經(jīng)持有了controller。本來(lái)筆者封裝的目的就是為了讓widget與controller的之間解耦合。但此時(shí)的筆者。。。。

放棄不是不可能放棄的,這輩子都不會(huì)放棄的!

于是筆者取了巧,寫(xiě)了一個(gè)初始化監(jiān)聽(tīng)器 initializedListener ,包換2個(gè)參數(shù): bool,Widget ,初始化是否成功;其中widget為初始化成功返回需要展示的播放器UI,失敗默認(rèn)返回 const SizedBox() 。

到這里就可以簡(jiǎn)單使用了:

沒(méi)看錯(cuò),視頻播放就是這么簡(jiǎn)單。

如果有更多的業(yè)務(wù)功能,筆者也按照自己的需求寫(xiě)了一套,同樣的開(kāi)發(fā)者可根據(jù)自身需要自行添加或修改。

VideoPlayerGestures 主要是處理手勢(shì)的,比如快進(jìn)、快退等跳轉(zhuǎn)播放;左側(cè)上下滑動(dòng)調(diào)節(jié)亮度;右側(cè)上下滑動(dòng)調(diào)節(jié)音量;單擊是否開(kāi)啟沉浸式播放,所有widget的隱藏與顯示;雙擊播放、暫停等。

哦,還有 PercentageWidget 也放到這個(gè)文件下了,就是這玩意:

因?yàn)轱@示的百分比與手勢(shì)相關(guān),隨著手勢(shì)移動(dòng)而更新。開(kāi)發(fā)者可自行處理。

筆者處出于簡(jiǎn)單考慮,就按照整個(gè)UI的位置命名了。瞅一眼就知道是啥玩意。

同樣的開(kāi)發(fā)者可根據(jù)自身需要自行添加或修改。

就是這玩意:

同樣的開(kāi)發(fā)者可根據(jù)自身需要自行添加或修改。話說(shuō)這個(gè)鎖的 Icon 的open和close是真的難分辨!

就是這玩意:

同樣的開(kāi)發(fā)者可根據(jù)自身需要自行添加或修改。

這玩意是自定義的,別問(wèn),問(wèn)就是跟產(chǎn)品干一架落了下風(fēng)

主要就是自定義這玩意:

同樣的開(kāi)發(fā)者可根據(jù)自身需要自定義。

注:這里沒(méi)有添加緩沖的進(jìn)度,開(kāi)發(fā)可查看 video_player 中的源碼 VideoProgressIndicator ,按業(yè)務(wù)自行定義。

這玩意就是整合以上的widget,再考慮下全屏的安全區(qū)域,沒(méi)啥東西。開(kāi)發(fā)者可自行處理!

具體的實(shí)現(xiàn)監(jiān)聽(tīng)器的思路, 看這里 。

自此一個(gè)漂亮的Flutter視頻播放器就已經(jīng)結(jié)束了。如果您覺(jué)得對(duì)您有些許幫助的話,歡迎 Star !

Flutter 音視頻處理FFmpeg

只能說(shuō) Flutter 確實(shí)很強(qiáng)大

ffmpeg 插件,文檔沒(méi)給出如何給視頻添加水印, 但是給出了執(zhí)行命令的方法演示, 這就足夠了。

添加一個(gè)水印:

String command = "-i " + inputVideoPath +

" -i "+waterMarkPath+" -filter_complex overlay "+

outVideoPath+"";

添加多個(gè)水印命令:

String command = "-i " + inputVideoPath +

" -i "+waterMarkPath2+" -i "+waterMarkPath+

" -filter_complex overlay=10:10,overlay=5:5 "+

outVideoPath+"";

將視頻轉(zhuǎn)換成小尺寸視頻:

String command = "-i " + inputVideoPath +" -b:v 10000k -s 216x384 "+ outVideoPath+"";

如果碰到 App crash with error message: couldn't find "libmobileffmpeg_abidetect.so"

執(zhí)行

flutter clean

flutter doctor -v

Flutter 插件問(wèn)題(引入插件同時(shí)存在靜態(tài)庫(kù)與swift)

前提:Flutter 項(xiàng)目中引入使用多個(gè)插件,內(nèi)含有swift與靜態(tài)庫(kù)時(shí)出現(xiàn)的一系列問(wèn)題

問(wèn)題一、swift插件缺少設(shè)置swift的版本號(hào)

解決方案:在Xcode中打開(kāi)項(xiàng)目Targets—builds settings —user-defined

在user-defined內(nèi)添加一行:SWIFT_VERSION(版本號(hào)視當(dāng)前版本號(hào)為準(zhǔn))

問(wèn)題二、靜態(tài)庫(kù)

看到網(wǎng)上好多的解決方法是刪除掉或者添加上Podfile中的use_frameworks!,實(shí)測(cè)與此無(wú)關(guān),錯(cuò)誤信息忘記截圖啦????,大體就是pod install 時(shí)出現(xiàn)無(wú)法install之類的信息

正解方法是找到相關(guān)錯(cuò)誤插件內(nèi)的podspec文件,添加s.static_framework = true

新聞名稱:flutter音頻插件,flutter 播放器插件
本文地址:http://chinadenli.net/article27/dsepgjj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站App開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站全網(wǎng)營(yíng)銷推廣軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名