因項目需要用到加解密,然后研究了下flutter大部分是用原生實現(xiàn)加解密的,但是這樣不是我想要的,后面找資料發(fā)現(xiàn)dart有一個加密工具 encrypt 。然后研究了下,可以實現(xiàn)我們大部分加解密。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比吉林網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式吉林網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋吉林地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
使用Dart實現(xiàn)加解密,有對稱加密AES,非對稱加密RSA。
工具類封裝了AES加解密,RSA加解密和數(shù)字簽名,RSA也實現(xiàn)分段加解密。
一、導包
二、工具類
1.在assets下添加加密公鑰和解密私鑰
2.導入encrypt庫
3.創(chuàng)建加解密輔助類
注:分段加密參考? 關于Flutter中RSA分段加密
目前Flutter平臺主流的兩個播放器是video_player和fijkplayer
pub
github
1、Flutter平臺官方插件,作者是國外的,有問題溝通比較困難,只能通過提交issue
2、硬解碼
4、UI封裝: better_player
基于video_player和Chewie的高級視頻播放器。它解決了許多典型的用例,并且易于運行。
5、播放器寬高比例與視頻內(nèi)容寬高比例不一致時,會出現(xiàn)圖像壓縮變形的問題
6、調(diào)用原生內(nèi)核播放器:iOS--AVPlayer, Android--ExoPlayer
7、對于分段源 m3u8 的播放不友好,如果一個切片播放超時,會導致整個播放都失敗
8、better_player可以緩存視頻,但不能自定義緩存的地址,只能指定key,和緩存的最大內(nèi)存量(還未研究超出最大的話是不能緩存新的,還是刪除最舊的)
9、better_player不能完全自定義UI,只能修改類中的一些開放屬性,比如說icon圖標,文字顏色啥的
10、無網(wǎng)絡有緩存時,封面可以正常展示
11、better_player播放失敗有手動retry的設計
pub
github
1、fijkplayer 是一個 Flutter 生態(tài)的媒體播放器,是對 ijkplayer 的 Flutter 封裝,支持 Android 和 iOS。 fijkplayer 使用 ijkplayer 作為播放器內(nèi)核,ijkplayer 使用 ffmpeg 進行音視頻解封裝和解碼,同時添加了 Android 和 iOS 平臺特有的硬件加速解碼能力。
2 、國內(nèi)有QQ群,但是活躍度也是不高。
3、可以緩存視頻,可以自定義緩存的地址,方便后續(xù)的內(nèi)存維護。
4、可以通過FijkPanelWidgetBuilder較大程度上自定義UI。
5、無網(wǎng)絡有緩存視頻時,無法展示封面,因為內(nèi)部是通過imageProvider去加載網(wǎng)絡圖片的。
7、播放失敗無手動retry的設計
1、兩種播放器都是通過外接紋理方案 (Texture),將播放器視頻畫面渲染接入 flutter 中,性能上優(yōu)于 PlatformView 的接入方法。
如何自己實現(xiàn)?
下面以video_palyer的iOS源碼部分解釋:
iOS用CVPixelBufferRef將渲染出來的數(shù)據(jù)存在內(nèi)存中,F(xiàn)lutter engine會將Texture的數(shù)據(jù)在內(nèi)存中直接進行映射無需通過Channel傳輸,然后Texture Widget就可以把你提供的這些數(shù)據(jù)顯示出來。在我們傳輸數(shù)據(jù)的時候會需要將其與 TextureID 綁定,綁定的過程通過BasicMessageChannel實現(xiàn)數(shù)據(jù)流的傳輸,以做到實時展示的效果