flutter boost
# 第一章
???????flutter組件化調研_lvwuxue的專欄-CSDN博客# 一、組件化接入方式跟原生組件化類似,共有兩種方式接入:pod和framework怎么配置flutter環境,flutter官網上講得很詳細了,不在累贅了## 1.以pod的方式接入 1.創建一個flutter_module```flutter create -t module flutter_module```狀態丟失的問題
2.0 共享引擎
將VC與引擎相關聯,使flutterVC與app生命周期捆版
解決
## 2.2.2常用框架
交互:
platform channel,三種方式
紋理:
texture,flutterTextureRegest
platform view:
外接紋理
原理:蓋個uiview在flutter view上面
解決:修改SDK內部的view渲染
第三章 多場景應用框架和設計
## 3.1.2 flutter編程模型分析
1.controller 混沌打包
2.presenter 隔離view和model,定義行為方向,protecol
3.viewmodel 定義行為模式,雙向綁定,rac
4.flux 簡化行為模式,單向通信,Redux
5.flutter基礎編程
statelessWidget:創建時就定義了view,簡單而安全
fullWidget:statelessWidget+model
1)fullWidget分治能力:
1.不拆分數據,拆分邏輯。
2.拆分數據,不拆分邏輯。
3.拆分數據,拆分邏輯。
2)fullWidget之間的通信
1.notify模式。通知/監聽模式,單向
2.transfer模式。數據傳輸模式,單向,socket,stream
3.invoke模式。接口調用模式,雙向
分治:flutter-redux, flutter-hook;
通信:provider,BLoC;
分治和通信:scoped_model,fish-redux
3.2流式場景下的框架設計與應用
3.3 flutter場景下的多媒體框架實踐
3.3.1 基本概念:外界紋理、channel、FFI和PlatformView
1).PlatformView
2)Dart-FFI,解決跨語言訪問(C和C++) 的問題
3)外界紋理,解決不支持大批量數據的訪問 的問題
3.3.2 多媒體消費端實踐:視頻播放
1.基于外界紋理的播放器方案
解碼數據格式問題:iOS端系統播放器的視頻幀輸出格式只支持YUV或RGBA
格式轉換成YUE:
1.libyue ,視頻分辨率高時,CPU消耗大,發燙
2.OpenGL通過RTT渲染成RGBA,線程卡頓,界面卡頓
3)共享紋理--[萬萬沒想到-Flutter這樣外接紋理](https://blog.csdn.net/weixin_38912070/article/details/93857098),播放卡頓
4)基于CPU和GPU共享內存的方案,iOS用CVOpenGLESTextureXaxheRef,android用SurfaceTexture,從內存獲取對于的OpenGL的紋理
2.基于platformView的播放器方案
3.3.3 多媒體消耗端實踐:圖片組件
下載ImageStream,解碼ImageDecode,緩存ImageCache,渲染Image
1.基于外界紋理的圖片組件 。Texture
2.基于flutter引擎層擴展圖片加載器的方案。 引擎層和C++的交互方式--Register Natives,與FFI原理一致
3.基于內存地址傳遞的圖片解決方案。用FFI的pointer類,用asTypedList轉換為Uint8Liat的預想,在用decodeImageFromPixels講圖片地址轉換成image
3.3.4 platform 線程和EGLContext
flutterEngine同時運行四個線程:UI、I/O、GPU、Platform
如果OPeGL在主線程運行會導致,GPU和Platform使用同一個線程,導致bug
3.3.5 小結
1.內存問題。
flutterEngine啟動占了較大內存,所以對于內存消耗較大的音視頻來說,開發者要遵循“省吃儉用”的原則,并貫穿整個開發設計過程
2.線程問題。
主線程不能有OpenGL的操作
3.異步調用。
Flutter Channel是異步調用的,所以可能有一些原油的同步邏輯都需要改成異步化并保證穩定性相比普通flutter業務開發,音視頻開發有很大不同。它的native端邏輯開發可能占了過半的工作量。因此相對于普通業務開發,flutter的優勢并沒有發揮得很明顯。但隨著日益完善的第三方庫Camera、OpenGL、MediaCodec等APi,會慢慢變好
3.4 游戲化場景的架構設計與應用
游戲風口
3.4.1 技術選型
Flame:輕量化的游戲引擎
1.沒有沒有使用flutter的開發方式。而是用Game和Componet定義新的游戲開發框架,對于flutter開發和傳統游戲開發都不友好
2.與flutter融合較為生硬,Flame采用Canvas實現,在游戲場景中無法實現局部刷新,存在性能隱患。缺少GUI系統,場景內嵌套UI比較難。缺少手勢事件。
3,動畫指出格式不主流,骨骼動畫支持Flare,不支持DragoneBone。且粒子動畫對主流格式的支持也不夠友好
4.資源管理存在內存問題,資源加載后一直不會釋放
總結
以上是生活随笔為你收集整理的flutter boost的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将Eclipse4.0修改为传统的界面
- 下一篇: pixel(css pixel dev